2017-02-15 3 views
1

im пытается использовать число, сохраненное в локальной varibale в моей программе RPGLE, в качестве стартового номера для последовательности DB2. Возможно ли это ?. Что-то вроде:Передача последовательности SEQUENCE NUMBER из локальной переменной RPGLE -> DB2

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

это не-нет для компилятора. Есть идеи?.

Последнее, используя DB2, как я могу получить LAST номер последовательности после ее использования? Мне нужно сохранить этот номер в DTAARA для хранения.

Спасибо заранее,

ответ

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 это числовая переменная, то в этом случае, нет никакого риска инъекции.

Смежные вопросы