DB2 SQL считает IF ELSE условие оператором DDL? - PullRequest
0 голосов
/ 29 октября 2018

Я пытаюсь использовать простой запрос IF ELSE для тестирования возможности с DB2 SQL. Однако когда я пытаюсь выполнить его, я сталкиваюсь с ошибкой, утверждающей, что мне не разрешено выполнять операторы DDL.

Что меня отталкивает, так это то, что, насколько я знаю, только операторы, изменяющие структуру базы данных, считаются операторами DDL.

Что дает?

Код:

IF 'True' = 'True' THEN
  SELECT * FROM RM_TRANSACTION 
  FETCH FIRST 2 ROWS ONLY 
  FOR READ ONLY WITH UR
ELSE
  SELECT * FROM RM_TRANSACTION 
  FETCH FIRST 4 ROWS ONLY 
  FOR READ ONLY WITH UR
END IF

https://imgur.com/a/58RYjpu

1 Ответ

0 голосов
/ 30 октября 2018

Проблема в том, что вы не можете «выбрать никуда» в составном операторе DB2 Db2 CLP может вернуть вам результирующий набор одного оператора SQL, но он не пытается сделать то же самое для операторов выбора в составном операторе. Если вы хотите напечатать результирующий набор из оператора select в составном операторе, вы можете, например, объявить курсор, извлечь его в цикле и использовать dbms_output.put_line вызовы для печати значений переменные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...