im试图使用我的rpgle程序上的本地varibale上存储的数字作为DB2序列的开始号。这是可以的吗?类似:
Exec SQL
create sequence MySequence
start with :MYVAR
increment by 1
no maxvalue
no cycle;
是编译器的禁忌。有什么想法吗?
最后,使用DB2在使用后如何获得序列的最后一个数字?我需要将该数字保存到Dtaara。
预先感谢
您不能在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
是数字变量,那么在这种情况下,没有注射风险。