powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Работа с ODBC
4 сообщений из 4, страница 1 из 1
Работа с ODBC
    #32713693
Jeremic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте.
Народ, помогите пожалуйста!

Такая дилемма:
Я хочу получить число которое возвращает следующая конструкция:
Select count(n_izd) from J where n_izd = ?

Для этого я написал такой фрагмент
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
#define NDPI  6 

UCHAR query[ 100 ];
int num;

 /*
   Все соответсвующие функции которые начинают работу с ODBC: 
   Назначение идентификатора окружения
   Назначение идентификатора соединения
   Соединение с сервером
   Подключение с сервером
   Назаначение идентификатора оператора STMT   
*/ 

strcpy((char *)query,"Select count(n_izd) from J where n_izd = ?")

  rc = SQLPrepare(stmt, query, (SDWORD)strlen((char *)query));
  test_err(rc);

   /* Связываю входной параметер */ 
  rc = SQLBindParameter(stmt, 1 ,SQL_PARAM_INPUT,SQL_C_CHAR,SQL_CHAR,NDPI, 0 , n_post,  0 , &cbTEST );
  test_err(rc);  /* проверяю на ошибку */ 

  rc = SQLBindParameter(stmt, 2 ,SQL_PARAM_OUTPUT,SQL_C_SLONG,SQL_INTEGER,sizeof(num), 0 ,&num, 0 ,ST);
  test_err(rc);

  rc = SQLExecute(stmt);
  test_err(rc);  /* проверяю на ошибку */ 
   /* Здесь ругается на SQLExecute */ 
  

Я не понимаю, что надо сделать чтобы вернуть параметер(число) от вызова.
Я пробовал менять запрос на
Select count(n_izd) from J into ? where n_izd = ?
и
? = Select count(n_izd) from J where n_izd = ?
но тогда ругается на SQLPrepare.
Как быть? Помогите пожалуйста.
...
Рейтинг: 0 / 0
Работа с ODBC
    #32713718
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это не параметр, а колонка набора данных. Ее надо биндить с помощью SQLBind (или как там ее) и ПОСЛЕ SQLExec. Т.е. второй параметр надо убрать.
...
Рейтинг: 0 / 0
Работа с ODBC
    #32713882
Jeremic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, я попробую, но тогда мне не понятно, зачем у функции

Код: plaintext
1.
SQLBindParameter(stmt, 2 ,SQL_PARAM_OUTPUT,SQL_C_SLONG,SQL_INTEGER, ... );

есть такое третий параметер SQL_PARAM_OUTPUT, который маркирует значение возврата или параметер вывода в процедуре.

Я этого не понимаю. Если можно какой нибудь пример использования параметра SQL_PARAM_OUTPUT
...
Рейтинг: 0 / 0
Работа с ODBC
    #32714042
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JeremicСпасибо, я попробую, но тогда мне не понятно, зачем у функции

Код: plaintext
1.
SQLBindParameter(stmt, 2 ,SQL_PARAM_OUTPUT,SQL_C_SLONG,SQL_INTEGER, ... );

есть такое третий параметер SQL_PARAM_OUTPUT, который маркирует значение возврата или параметер вывода в процедуре.

Я этого не понимаю. Если можно какой нибудь пример использования параметра SQL_PARAM_OUTPUT


SQL_PARAM_OUTPUT служит для обозначения выходных параметров процедур.
Пример - вызов любой процедуры с выходным параметром.

'exec someProc @id = ?'
или как это там в ODBC
'call ?=someProc ?'
Кстати, во втором случае код возврата процедуры тоже должен быть сбинден как выходной параметр (это для СУБД типа MSSQL и Sybase ASE).
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Работа с ODBC
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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