Приведите NULL в операторы DB2 SQL - PullRequest
1 голос
/ 22 декабря 2010

Я нашел много информации о DB2 и ее строгой системе типов, но нет исчерпывающего информационного бюллетеня о приведении NULL.Кроме того, между версиями, похоже, есть тонкие различия.

Я не совсем понимаю, когда я могу просто поместить null в предложение SQL, и когда мне нужно явно привести null к любому другому типу.

Примеры (какой из них правильный?)

Вставка (или обновление):

INSERT INTO X (A) VALUES (null)
INSERT INTO X (A) VALUES (cast(null as integer))

Выбор:

SELECT null FROM SYSIBM.DUAL
SELECT cast(null as integer) FROM SYSIBM.DUAL

Вызов (сохраненпроцедуры):

X (null);
X (cast(null as integer));

и т. д. *

Кто-нибудь знает хороший ресурс, объясняющий, когда необходимы приведения?И в каких версиях DB2 / с какими параметрами конфигурации?

1 Ответ

1 голос
/ 22 декабря 2010
  • Для операций INSERT оба будут работать.
  • Для SELECT необходимо приведение.
  • Для хранимой процедуры я предполагаю, что оба будут работать.

Обоснование относительно простое:

  1. С помощью INSERT целевой столбец (A) сообщает системе, какой тип NULL.
  2. С сохраненнымПроцедура, объявление аргумента сообщает системе, какой тип NULL.
  3. С помощью SELECT нет ничего, кроме приведения, сообщающего системе, какой тип NULL.
...