Столкнувшись с проблемой:
ORA-32108: максимальный размер столбца или параметра не указан
Я немного исследовал, и я нашел эти два вопроса: Почему Oracle 9i обрабатывает пустую строку как NULL? а также Oracle не различает пустые и пустые строки? .
Эти вопросы объясняют ошибку, которую я получаю. Но это привело меня к следующему вопросу — как я могу вернуть пустую строку в качестве значения поля в ResultSet в Oracle?
То, что я до сих пор это:
oracle::occi::OCCICURSOR
execute
заявлениеGetCursor
использовать возвращенный набор результатов execute
не удается из-за ошибки, описанной выше.
Итак, как я могу вернуть такое поле в результате набора, который имеет значение пустой строки (''
)?
Другими словами, я не знаю, как применить действие, указанное ВОТ — это что-то на стороне сервера? Или я должен добавить что-то в мой код? Или в хранимой процедуре, которая возвращает этот набор результатов?
Я использую OCCI (Oracle C ++ Call Interface). Мой текущий обходной путь должен вернуть строку, содержащую один пробел (' '
), но мне это не нравится.
Если вы хотите, чтобы столбец возвращался полностью NULL, вы можете использовать CAST()
, который преобразует один тип данных в другой.
Например, следующее сгенерирует полностью нулевой столбец.
select a.*, cast(null as varchar2(1)) as null_column
from my_table a
Но база данных теперь понимает, что это должен быть столбец VARCHAR2 (1), тогда как если вы используете null as null_column
не указана максимальная длина
Других решений пока нет …