【问题标题】:Use in parameter as table name in stored procedure inner sql definition使用 in 参数作为存储过程内部 sql 定义中的表名
【发布时间】:2016-05-30 15:08:19
【问题描述】:

由于在回答过程中进行了一些更改,因此这里是工作程序:

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')@

谢谢。

流浪汉

【问题讨论】:

  • 如果不替换字符串它工作正常,我只需要找到一种方法来替换变量中的那些字符串。
  • 对不起,误读了一点。请注意,您仍然必须验证表名,否则将面临危险。

标签: sql stored-procedures parameters cursor db2


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2011-10-26
    • 1970-01-01
    • 2016-08-23
    • 2010-12-24
    • 2013-06-11
    • 1970-01-01
    • 2016-03-11
    • 2018-11-27
    • 1970-01-01
    相关资源
    最近更新 更多