我通常使用Oracle数据库,当创建存储过程时,可以编写游标,其中where子句可以有一个变量,该变量的值可以在运行时提供。如何在mySQL中编写类似的内容
之类的OPEN myCursor ("NEW");
可以在游标定义中使用用户自定义变量和/或局部变量(包括过程参数),既可以在外部赋值,也可以在内部计算:
CREATE PROCEDURE test_proc( {parameters} )
BEGIN
DECLARE _id_ INT;
DECLARE cur CURSOR FOR
SELECT id FROM test WHERE val = {variable};
DECLARE EXIT HANDLER FOR NOT FOUND
BEGIN
CLOSE cur;
END;
OPEN cur;
LOOP
FETCH cur INTO _id_;
SELECT _id_;
END LOOP;
END
但是您不能"动态地"更改参数。-打开游标后,其参数的变化将被忽略(在打开游标的过程中,游标的文本是固定的,在固定的文本中使用值而不是名称)。
因此,当您需要更改动态分配的参数时,必须关闭并重新打开游标。
演示小提琴