2009-05-26 5 views
2

Я написал запрос DB2, чтобы сделать следующее:DB2 эквивалентна GO GO GO?

  • Создать временную таблицу
  • Выберите из запроса монстра/вставить в временную таблицу
  • Выберите из временной таблицы/удалить из старой таблицы
  • Выберите из временной таблицы/вставить в другую таблицу

в MSSQL, мне позволено запускать команды один за другим, как один длинный запрос. В противном случае я могу ограничить их командами «GO». Когда я пытаюсь это в DB2, я получаю ошибку:

DB2CLI.DLL: ERROR [42601] [IBM][CLI Driver][DB2] SQL0199N The use of the reserved 
word "GO" following "" is not valid. Expected tokens may include: "". 
SQLSTATE=42601 

Что я могу использовать, чтобы разграничить эти инструкции без временной таблицы, выходящей за рамки?

ответ

4

GO является то, что используется в MSSQL Studio, у меня есть собственное приложение для запуска upates в прямом эфире и использовать «GO», чтобы разорвать заявления друг от друга.

Поддерживает ли DB2 точку с запятой (;)? Это стандартный разделитель во многих реализациях SQL.

+0

Это немного сложнее в DB2. Обычно разделитель по умолчанию является точкой с запятой, однако в телах хранимых процедур и др. Разделитель всегда является точкой с запятой, в то время как разделитель используется _a после_CREATE PROCUEDURE/любая команда должна быть чем-то другим. Вы можете переопределить этот разделитель в среде, из которой вы вызываете DB2. Традиционно \\ используется как «внешний разделитель», но вы можете использовать любую другую строку. –

1

Я бы попробовал обернуть то, что вы хотите сделать в BEGIN и END, чтобы установить область действия.

GO не является командой SQL, это даже не команда TSQL. Это инструкция для синтаксического анализатора. Я не знаю DB2, но я бы предположил, что GO не обязательно.

From Devx.com Tips

Although GO is not a T-SQL statement, it is often used in T-SQL code and unless you know what it is it can be a mystery. So what is its purpose? Well, it causes all statements from the beginning of the script or the last GO statement (whichever is closer) to be compiled into one execution plan and sent to the server independent of any other batches.

1

Вы пробовали использовать только полуколонку вместо «GO»?

Эта ссылка позволяет предположить, что точка с запятой должна работать для DB2 - http://www.scribd.com/doc/16640/IBM-DB2

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