我很好奇如何从同一存储过程中的辅助查询或SET调用引用现有存储过程SELECT语句。
例如:
CREATE PROCEDURE 'mysp' (OUT sumvalue INT)
BEGIN
-- This is the core recordset the SP returns
SELECT * FROM Table
-- I also want to return a value based on the above recordset
SET sumvale = SUM(previousselect.values)
END
基本上,我有一个返回详细记录集的SP,我需要根据该记录集中的数据返回SUM和自定义值。问题是我无法弄清楚如何在SELECT语句之后引用数据(例如,它是否创建了我可以使用的内部引用,例如@ recordset1.X)。
任何帮助都将不胜感激。
答案 0 :(得分:1)
尝试使用this链接中的光标:
由于MySql不允许您从商店程序或函数返回记录集,您可以尝试这样做:
CREATE DEFINER=`root`@`localhost` PROCEDURE `some_procedure`(out some_id int)
BEGIN
declare done boolean default false;
declare id int;
declare tot decimal(10,2);
declare some_cursor cursor for
select id, total from some_table where id = some_id;
declare continue handler for not found set done = true;
open some_cursor;
loop1: loop
fetch some_cursor into id, tot;
if done=true then
leave loop1;
end if;
//do your calculation here or whatever necessary you want to do with the code
end loop loop1;
END;