我有以下存储过程:
mysql> call generateSerial('param1',1,@serial);
Query OK, 0 rows affected (0.00 sec)
mysql> select @serial;
+--------------+
| @serial |
+--------------+
| 100000000033 |
+--------------+
我想在选择查询的每一行上面使用@serial以上,例如:
select @serial ,...
from table_test;
并且每行都有@serial通过差异程序执行
我知道在select stm
中无法执行该过程但我也无法使用函数,因为我需要使用事务来获取@serial
我有机会了解这个案子;
答案 0 :(得分:0)
这是创建第二个过程的一种方法,它循环遍历表行并为每一行调用generate serial过程。
CREATE PROCEDURE run()
BEGIN
DECLARE serial VARCHAR(32);
DECLARE col_int INT;
DECLARE col_varchar VARCHAR(10);
DECLARE done INT DEFAULT FALSE;
DECLARE query CURSOR FOR SELECT column_int, column_varchar FROM t;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
OPEN query;
q: LOOP
FETCH query into col_int, col_varchar;
IF done THEN
LEAVE q;
END IF;
CALL GenerateSerial(col_varchar,col_int,serial);
select serial;
END LOOP;
CLOSE query;
END;