powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Передача в базу 0
5 сообщений из 5, страница 1 из 1
Передача в базу 0
    #33795128
Eugene7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите плз, вот примерный код(упрощенный):

SQLPrepare(hStmt, (SQLCHAR *)szSQL, SQL_NTS);
LONG lValue = 0;
SQLBindParameter(hStmt, ++iParam, SQL_PARAM_INPUT, SQL_C_LONG, SQL_INTEGER, 0, 0, &lValue, 0, 0);
SQLExecute(hStmt);
SQLFetch(hStmt);
void *ptr;
result = SQLGetData(hStmt, 1, SQL_C_TCHAR, ptr, MAX_TEXTLEN, &cb);
if (result = SQL_ERROR)
{
/* Здесь выдаю сообщение об ошибке */
}

Если передаю туда(lValue) 0(причем мне надо передать именно 0, а не NULL(пустое значение)), то потом при заборе данных из базы SQLGetData() возвращает SQL_ERROR, и текст ошибки "Invalid descriptor index"
Что эта ошибка означает и что ее вызвало?
...
Рейтинг: 0 / 0
Передача в базу 0
    #33796551
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А ты уверен что у тебя SQLExecute и SQLFetch отработали как надо?
Если SQLGetData падает на "Invalid descriptor index" а индекс единичка - значит в резалтсете нету ни одной колонки.
...
Рейтинг: 0 / 0
Передача в базу 0
    #33797163
Eugene7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тогда понятно почему возникает ошибка.
У меня ХП в базе принимает на вход 15 параметров, первый параметр определяет поведение процедуры(если 0, то вернуть резалт сет из 1 колонки, если 1 то из 7 колонок). Из всех 15 параметров все char кроме двух. Первого(который определяет поведение) и предпоследнего(скидка).
Так вот, если я передаю скидку 0, то у меня мод(первый параметр) туда получаеться передаеться тоже 0(хотя передаю 1) и резалт сет соответственно из 1 колонки. Процедуру оттестировал в интерактив SQL, там все нормально, передаю первый параметр 1 и скидку 0 и резалт сет 7 колонок как и должно быть. Такая проблема только в ODBC. Из-за чего это может быть? (если надо могу привести необходимые исходники)
...
Рейтинг: 0 / 0
Передача в базу 0
    #33798540
Eugene7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
up
...
Рейтинг: 0 / 0
Передача в базу 0
    #33800512
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eugene7Так вот, если я передаю скидку 0, то у меня мод(первый параметр) туда получаеться передаеться тоже 0(хотя передаю 1)Значит ищи глюк в привязке параметров. Может там индексы параметров перепутал или не тот буфер использовал, или вообще SQLPrepare забыл :)
Попробуй вообще отказаться от привязки параметров - формируй строку запроса как строку и отсылай ее через ExecDirect.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Передача в базу 0
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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