写了一个游标的例子:
CREATE PROCEDURE procedure_test(IN param INT,OUT result varchar(12))
BEGIN
DECLARE new_name varchar(12);
DECLARE c_test CURSOR FOR SELECT id,name FROM testTable; @1 两列
IF param='3' THEN
OPEN c_test;
FETCH c_test INTO new_name; @2 一列
SELECT CONCAT('HAH',new_name) INTO result;
CLOSE c_test;
END IF;
END
testTable表里只有一个自增的ID列与NAME列。
CALL procedure_test('3',@test);
当在调用存储过程时,出现1328 - Incorrect number of FETCH variables 问题,主要原因是@1处声明游标时选择出的列与@2处读取时的列不同。
只要将@1处修改为 SELECT name FROM testTable 就可以进行操作了,
SELECT @test;