2013-05-31 5 views
1

Я пытаюсь выполнить соединение заявление следующего типа в процессоре командной строки DB2Составной оператор в db2 процессоре командной строки

BEGIN ATOMIC 
UPDATE schema.tablename set column1 = xyz where condition = somecondition; 
UPDATE schema.tablename2 set column2 = abc where condition = somecondition 
END 

Но я получаю следующее сообщение об ошибке

BEGIN ATOMIC 
UPDATE schema.tablename set column1 = xyz where condition = somecondition 
DB21034E The command was processed as an SQL statement because it was not a 
valid Command Line Processor command. During SQL processing it returned: 
SQL0104N An unexpected token "END-OF-STATEMENT" was found following "where condition = somecondition". 
Expected tokens may include: "<delim_semicolon>". LINE 
NUMBER=2. SQLSTATE=42601 

UPDATE schema.tablename2 set column2 = abc where condition = somecondition END 
DB21034E The command was processed as an SQL statement because it was not a 
valid Command Line Processor command. During SQL processing it returned: 
SQL0104N An unexpected token "END" was found following "where condition = somecondition". 
Expected tokens may include: "END-OF-STATEMENT". SQLSTATE=42601 

SQL0104N An unexpected token "END" was found following "where condition = somecondition". Expected tokens may include: "END-OF-STATEMENT        ". 

Я не уверен, если это поддерживается в процессоре командной строки db2 sql. Требование состоит в том, чтобы выполнить три запроса в атомном режиме, но не в хранимой процедуре. Просьба указать, есть ли другая альтернатива.

ответ

1

Вам нужно будет определить символ терминатора, отличный от умолчания, иначе процессор командной строки не сможет отличить точки с запятой внутри составного оператора, а другой после составного оператора.

Таким образом, вы бы вызвать его в качестве db2 [email protected], установив заявление терминатор на «@», и ваше заявление будет выглядеть следующим образом:

BEGIN ATOMIC 
UPDATE schema.tablename set column1 = xyz where condition = somecondition; 
UPDATE schema.tablename2 set column2 = abc where condition = somecondition; 
[email protected] 
+0

Спасибо за помощь. Теперь работает. – nishantv

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