在存储过程内部sql定义中使用参数作为表名

时间:2016-02-18 12:36:04

标签: sql stored-procedures parameters cursor db2

由于在答案期间做了一些更改,因此工作程序是:

CREATE OR REPLACE PROCEDURE SQLTEST(in intab VARCHAR(50))
LANGUAGE SQL
BEGIN ATOMIC
DECLARE SQLCMD VARCHAR(1024);
DECLARE tabname VARCHAR(50);
SET tabname=intab;

FOR v AS cur1 CURSOR FOR SELECT ID, CMD from COMMANDTBL
DO 
  SET SQLCMD = REPLACE(v.CMD, 'TABREPL', tabname); 

PREPARE myStmt FROM SQLCMD; 
EXECUTE myStmt;
END FOR;
END@

如图所示,我想使用in参数调用该过程,该参数是内部sql定义中的表名。

调用它是:

CALL SQLTEST('targettbl')@

谢谢。

TheVagabond

1 个答案:

答案 0 :(得分:1)

在单个表达式中执行逻辑是否有效?

SET SQLCMD = REPLACE(v.CMD, 'TABREPL', tabname);