我需要对我的数据库中的几个表执行相同的过程。问题是该程序包含以下行:
DECLARE tableIt CURSOR FOR select id from table where column=inputParam ;
table
是该过程使用的表。而且我找不到一种方法来使该表名称是动态的,即从输入参数中读取它。
现在我有8个不同的程序(每个表一个),它们只相互区分一个单词(表的名称)。 这真是一种痛苦,因为我必须对程序进行8次更改。
是否可以参数化CURSOR的select语句,这样我只能有一个过程??
答案 0 :(得分:0)
Mysql似乎不支持动态游标。 http://dev.mysql.com/doc/refman/5.1/en/cursors.html
你可以解决它
http://forums.mysql.com/read.php?98,133197,149099#msg-149099
“DROP VIEW IF EXISTS v1;
SET @ stmt_text = CONCAT(“CREATE VIEW v1 AS SELECT c_text FROM”,t_name);
PREPARE stmt FROM @stmt_text;
EXECUTE stmt;
BEGIN
DECLARE v_text VARCHAR(45);
DECLARE完成INT DEFAULT 0;
DECLARE c cursor FOR SELECT c_text FROM v1;“