我几乎没有任何使用适当 SQL 的经验,但我一直在尝试编写一个数据库函数,该函数等待直到满足条件,然后释放线程,这样我就可以在我想等到满足该条件时调用该函数。条件告诉我,一个单独的服务当前没有处理我想要访问的数据,但是为了开发,我创建了一个无用的条目,我只想手动删除它以进行测试。
到目前为止,这是我的代码,但我无法让它工作。对于开发,我尝试在数据库管理器中执行它,就像执行 SELECT 语句一样:
SET @c = 1;
WHILE @c > 0 DO
SELECT COUNT(*) INTO @c FROM pb_db_operational.application_parameter WHERE `key` = "waitingtest";
IF @c > 0
SELECT SLEEP(5);
END IF;
END WHILE;
SELECT 'asdf' FROM accessory_complete_price_factor LIMIT 1
我还尝试创建一个过程,因为在存储过程之外运行它时我无法使用 DECLARE 语句:
CREATE FUNCTION `WaitUntilDataReady`()
RETURNS TINYINT
LANGUAGE SQL
NOT DETERMINISTIC
CONTAINS SQL
SQL SECURITY DEFINER
COMMENT ''
BEGIN
DECLARE v_count INTEGER DEFAULT 1
WHILE v_count > 0 DO
set v_count = (SELECT COUNT(*) FROM pb_db_operational.application_parameter WHERE `key` = "waitingtest")
IF v_count > 0
SELECT SLEEP(5)
END IF
END WHILE
RETURN 1;
END
我无法让我的任何一个示例运行,所以我很高兴你能告诉我的每一条信息,即使它只是基本语法。
提前致谢 :)