mysql - 在select statememt中使用存储过程

时间:2015-10-29 04:43:42

标签: mysql

我有以下存储过程:

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

我有机会了解这个案子;

1 个答案:

答案 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;

SQL Fiddle