MySQL:几个表的一个存储过程

时间:2011-06-23 02:29:23

标签: mysql sql stored-procedures cursor

我需要对我的数据库中的几个表执行相同的过程。问题是该程序包含以下行:

DECLARE tableIt CURSOR FOR select id from table where column=inputParam ;

table是该过程使用的表。而且我找不到一种方法来使该表名称是动态的,即从输入参数中读取它。

现在我有8个不同的程序(每个表一个),它们只相互区分一个单词(表的名称)。 这真是一种痛苦,因为我必须对程序进行8次更改。

是否可以参数化CURSOR的select语句,这样我只能有一个过程??

1 个答案:

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