Exec SQL
create sequence MySequence
start with :MYVAR
increment by 1
no maxvalue
no cycle;
是编译器的禁忌。有什么想法?。
最后,使用DB2如何在使用后获取序列的最后一个数字?我需要将这个号码保存到DTAARA以便保存。
提前致谢,
答案 0 :(得分:1)
您不能在start with
语句的create sequence
子句中使用主机变量。但该声明可以动态准备。所以你可以这样做:
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
是一个数字变量,那么,在这种情况下,没有注入的风险。