【问题标题】:Passing SEQUENCE NUMBER start from local variable RPGLE -> DB2从局部变量 RPGLE -> DB2 开始传递 SEQUENCE NUMBER
【发布时间】:2017-02-15 18:39:49
【问题描述】:

我试图使用存储在我的 RPGLE 程序的本地变量中的数字作为 DB2 序列的起始数字。这可能吗?比如:

Exec SQL
   create sequence MySequence
   start with :MYVAR
   increment by 1
   no maxvalue
   no cycle;

是编译器的禁忌。有什么想法吗?。

最后,使用 DB2 后如何获取序列的 LAST 编号?我需要将该号码保存到 DTAARA 以备不时之需。

提前致谢,

【问题讨论】:

    标签: sql db2 db2-400 rpgle


    【解决方案1】:

    您不能在create sequence 语句的start with 子句中使用主机变量。但是该语句可以动态准备。所以你可以这样做:

    dcl-s myvar          Packed(5:0);
    dcl-s stmt           Varchar(512);
    
    stmt = 'create sequence MySequence ' +
              'start with ' + %char(myvar) +
              'increment by 1 ' +
              'no maxvalue ' +
              'no cycle';
    exec sql execute immediate :stmt;
    

    通常像这样连接 SQL 语句存在 SQL 注入风险,但如果 myvar 是数字变量,则在这种情况下,不存在注入风险。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-12-07
      • 2011-09-10
      • 2015-09-27
      • 2014-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多