Как вернуть пустую строку в наборе результатов (используя sys_refcursor) в БД ORACLE

Столкнувшись с проблемой:

ORA-32108: максимальный размер столбца или параметра не указан

Я немного исследовал, и я нашел эти два вопроса: Почему Oracle 9i обрабатывает пустую строку как NULL? а также Oracle не различает пустые и пустые строки? .


Эти вопросы объясняют ошибку, которую я получаю. Но это привело меня к следующему вопросу — как я могу вернуть пустую строку в качестве значения поля в ResultSet в Oracle?


То, что я до сих пор это:

  • создать заявление
  • зарегистрировать выходной параметр как oracle::occi::OCCICURSOR
  • execute заявление
  • я звоню GetCursor использовать возвращенный набор результатов

execute не удается из-за ошибки, описанной выше.

Итак, как я могу вернуть такое поле в результате набора, который имеет значение пустой строки ('')?

Другими словами, я не знаю, как применить действие, указанное ВОТ — это что-то на стороне сервера? Или я должен добавить что-то в мой код? Или в хранимой процедуре, которая возвращает этот набор результатов?


Я использую OCCI (Oracle C ++ Call Interface). Мой текущий обходной путь должен вернуть строку, содержащую один пробел (' '), но мне это не нравится.

1

Решение

Если вы хотите, чтобы столбец возвращался полностью NULL, вы можете использовать CAST(), который преобразует один тип данных в другой.

Например, следующее сгенерирует полностью нулевой столбец.

select a.*, cast(null as varchar2(1)) as null_column
from my_table a

Но база данных теперь понимает, что это должен быть столбец VARCHAR2 (1), тогда как если вы используете null as null_column не указана максимальная длина

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]