【发布时间】:2015-05-05 08:21:09
【问题描述】:
我想根据作为参数传递的表存储我的存储过程的结果,然后从中创建一个循环,以便我可以更新选定的行。
CREATE DEFINER=`root`@`localhost` PROCEDURE `close_transaction_procedure`(IN `tablename` VARCHAR(100), IN `businessdate_column` VARCHAR(40), IN `primary_number` VARCHAR(30), IN `lead_time` INT)
BEGIN
SET @strprd = CONCAT('SELECT ',primary_number, ', status_code FROM ',tablename,' WHERE ',businessdate_column ,' < DATE_SUB(NOW(), INTERVAL ', lead_time ,' DAY)');
PREPARE stmt1 FROM @strprd;
EXECUTE stmt1;
DEALLOCATE PREPARE stmt1;
-- loop based on results of execute stmt1
END
【问题讨论】:
-
问题是你不能将表名作为变量传递,或者你不知道如何存储结果并进行循环?
-
TBH 它是我的第一个存储过程任务,但如果代码与此类似,我知道如何创建循环:DECLARE cur1 CURSOR FOR SELECT id FROM account WHERE date_of_birth = '0000-00-00' ;但由于该代码不能使用参数作为表名,我使用了 SET @strprd = CONCAT() 语句......对不起,如果我的英语不好......无论如何谢谢!
-
我想存储结果并循环
-
你要更新什么?
-
我想知道如何得到'EXECUTE stmt1;'的结果然后做一个循环,以便我可以根据表格更新每一行的状态
标签: php mysql laravel stored-procedures laravel-5