【发布时间】:2014-03-06 05:49:17
【问题描述】:
我想将参数传递给过程并将其用作声明游标时的表名。以下代码返回错误消息:#1146 - 表 'db.table_id' 不存在。
声明游标时如何使用参数?
谢谢
分隔符;; 如果存在则删除程序 reset_id;; 创建过程 reset_id(table_id VARCHAR(25)) 开始 DECLARE done INT DEFAULT FALSE; 声明 id INT; 声明 id_new INT; DECLARE getid CURSOR FOR SELECT entryId FROM table_id ORDER BY entryId; DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1; 设置@id_new = 1; 打开getid; 将 getid 提取到 id 中; 重复 UPDATE table_id SET entryId = @id_new WHERE entryId = id; 设置@id_new = @id_new + 1; 将 getid 提取到 id 中; 直到完成 END REPEAT; 关闭 getid; 结尾 ;; 调用 reset_id('Test');
修改过程后,仍然返回错误#1324 - Undefined CURSOR: getid。我该如何解决这个问题?
【问题讨论】:
-
如果想要有变量表名,需要使用prepared statements(也称为动态SQL)。
-
您需要在过程中创建一些语句作为字符串。一个非常相似的问题和答案; stackoverflow.com/questions/3646412/…
标签: mysql sql phpmyadmin