Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Informix [игнор отключен] [закрыт для гостей] / Динамический SQL & привязка параметров / 2 сообщений из 2, страница 1 из 1
25.02.2005, 11:51
    #32933025
Sergey_Guest
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамический SQL & привязка параметров
Добрый день.

Сейчас пытаюсь заставить работать субж в проекте. Столкнулся такой проблемой. При попытке выставить значение параметра запроса выдается ошибка:
-1235
________________________________________________________
Character host variable is too short for the data.

In an ESQL/C program, the program has attempted to fetch a column value into a host variable that is not large enough. Use the DESCRIBE command to find out the sizes of column values.

Удивляет то, что я не пытаюсь сделать выборку, а наоборот, передать серверу параметр. Тем более, что в документации сказано, что Informix замечательно сам справляется с обрезанием/удлинением строчек и максимум что делает, это выдает warning.
Описанная ошибка возникает, если я пытаюсь выставить значение параметра типа CHAR(1). Все отлично работает, если тип CHAR(N), N > 1.

Вот пример кода:
Код: plaintext
INSERT INTO EVENTLOG (MOD_ID, MOD_DTIME, SEVERITY, EVENT_TEXT, PATH ) VALUES(?,?,?,?,?)

Привязку параметров делает следующий код:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
int      length;
int      i;
int      type;
char     charValue[ MAX_OPERVAL_SIZE +  1  ];
...
type =  0 ; //SQLCHAR
length =  1 ;
strcpy( charValue, "E" );
...
EXEC SQL set descriptor :descID value :i TYPE = :type, DATA = :charValue, LENGTH = :length;
Тип, длина и значение корректно проставляются перед выполнением привязки (которая завершается с ошибкой -1235).
Сам запрос выполняется без ошибок, но поле severity (not null) содержит NULL.

Подскажите, что за чудеса происходят и как мне корректно передать несчастный символ?

PS. Трюк типа
Код: plaintext
1.
2.
symbol = charValue[ 0 ];
EXEC SQL set descriptor :descID value :i TYPE = :type, DATA = :symbol, LENGTH = :length;
к сожалению не прокатывает :(
...
Рейтинг: 0 / 0
25.02.2005, 15:05
    #32933754
Sergey_Guest
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамический SQL & привязка параметров
Для того, чтобы привязать параметр типа CHAR(1) нужно выставить длину в дескрипторе равную не 1, а 2!
...
Рейтинг: 0 / 0
Форумы / Informix [игнор отключен] [закрыт для гостей] / Динамический SQL & привязка параметров / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]