вернет ноль с требуемым типом.

ичок в Derby и заметил, что сталкиваюсь с такими же проблемами, как и при использовании СУБД DB2, посколькуnull ценности обеспокоены. Документация Derby гласит, чтоnull Значение должно иметь тип, связанный с ним (что-то, от чего DB2 наконец избавилась в версии 9.7):

http://db.apache.org/derby/docs/10.7/ref/crefsqlj21305.html

Теперь я пытаюсь найтиГенеральная Решение этой проблемы здесь, поскольку это будет частью моей библиотеки абстракции базы данныхjOOQ, Приведенный ниже пример просто документирует проблему. Подумайте о любом другом (более сложном) примере. Следующее не работает:

insert into T_AUTHOR (
  ID, FIRST_NAME, LAST_NAME, 
  DATE_OF_BIRTH, YEAR_OF_BIRTH, ADDRESS) 
select 
  1000, 'Lukas', 'Eder', 
  '1981-07-10', null, null 
from SYSIBM.SYSDUMMY1

Это не так (что на самом деле делает jOOQ):

insert into T_AUTHOR (
  ID, FIRST_NAME, LAST_NAME, 
  DATE_OF_BIRTH, YEAR_OF_BIRTH, ADDRESS) 
select ?, ?, ?, ?, ?, ? 
from SYSIBM.SYSDUMMY1

Потому что дваnull значения не имеют типа, связанного с ним. Решением было бы написать что-то вроде этого:

insert into T_AUTHOR (
  ID, FIRST_NAME, LAST_NAME, 
  DATE_OF_BIRTH, YEAR_OF_BIRTH, ADDRESS) 
select 
  1000, 'Lukas', 'Eder', 
  '1981-07-10', cast(null as int), cast(null as varchar(500)) 
from SYSIBM.SYSDUMMY1

Или вот так соответственно

insert into T_AUTHOR (
  ID, FIRST_NAME, LAST_NAME, 
  DATE_OF_BIRTH, YEAR_OF_BIRTH, ADDRESS) 
select 
  ?, ?, ?, ?, cast(? as int), cast(? as varchar(500)) 
from SYSIBM.SYSDUMMY1

Но очень часто в Java тип, которыйnull должно быть приведено к неизвестно:

В этом примере типы могут быть получены из предложения вставки, но это может оказаться сложным или невозможным для более общих случаев использования.В других примерах я мог бы просто выбрать любой тип для броска (например, всегда приведение кint), но это не сработает в этом примере, так как вы не можете поставитьcast(null as int) значение вADDRESS.С HSQLDB (другой кандидат на эту проблему) я могу просто написатьcast(null as object) который будет работать в большинстве случаев. Но у Дерби нетobject тип.

Эта проблема раздражала меня в DB2 раньше, и я пока не нашел решения. Кто-нибудь знает остабильный, а такжеГенеральная Решение этой проблемы для любой из этих RDBMS?

дербиDB2

Ответы на вопрос(4)

Ваш ответ на вопрос