Привет, Hiden!
Вы пишешь 04 декабря 2006:
H> а если еще не писать exit !!. то будет следующая ошибка H> Expected end of statement, encountered EOF H> так как я создаю БД и ХП из makefile при помощи вызова isql, а exit !! H> прекращает вызов isql
Здравствуйте, Tonal-, Вы писали:
T>Здравствуйте, Alex.Che, Вы писали: AC>>isc_dsql_execute2 универсальнее, гибче и удобнее. T>Ну я как бы с этим не спорю. T>Просто привёл список доступных функций для решения его проблемы. T>Ну а уж выбирать всяко ему.
Попробывал использовать isc_dsql_execute2, но результат тот же:
message length error (encountered 0, expected 32)
Привет, Hiden!
Вы пишешь 04 декабря 2006:
H> Попробывал использовать isc_dsql_execute2, но результат тот же: H> message length error (encountered 0, expected 32)
Да не в бобине у тебя дело. (С)
Похоже, у тебя сервер и клент разных версий.
Ищи "лишние" gds32.dll
У "нелишних" сверяй версии.
Здравствуйте, Alex.Che, Вы писали:
AC>Привет, Hiden! AC>Вы пишешь 04 декабря 2006:
H>> Попробывал использовать isc_dsql_execute2, но результат тот же: H>> message length error (encountered 0, expected 32)
AC>Да не в бобине у тебя дело. (С) AC>Похоже, у тебя сервер и клент разных версий. AC>Ищи "лишние" gds32.dll AC>У "нелишних" сверяй версии.
AC>-- AC>With best regards, Alex Cherednichenko.
А в Linux эта библиотека как называется? если так же (gds32.so) то где ее искать, а то что то поиск не может найти
Привет, Hiden!
Вы пишешь 04 декабря 2006:
AC>> Да не в бобине у тебя дело. (С) AC>> Похоже, у тебя сервер и клент разных версий. AC>> Ищи "лишние" gds32.dll AC>> У "нелишних" сверяй версии.
H> А в Linux эта библиотека как называется?
libgds.so — для InterBase, либо же libfbclient.so — для Firebird.
Здравствуйте, Alex.Che, Вы писали:
AC>Привет, Hiden! AC>Вы пишешь 04 декабря 2006:
AC>>> Да не в бобине у тебя дело. (С) AC>>> Похоже, у тебя сервер и клент разных версий. AC>>> Ищи "лишние" gds32.dll AC>>> У "нелишних" сверяй версии.
H>> А в Linux эта библиотека как называется?
AC>libgds.so — для InterBase, либо же libfbclient.so — для Firebird.
AC>-- AC>With best regards, Alex Cherednichenko.
Я нашел четыре библиотеки в home/user/ibc/libgds.so, lib/libgds.so, opt/interbase.prev.lnk/lib/libgds.so, usr/lib/libgds.so
Что теперь с ними делать? Как посмотреть в линуксе их версии и как я понимаю лишние надо удалить или заменить, а какие будут лишние???
Привет, Hiden!
Вы пишешь 04 декабря 2006:
H> Я нашел четыре библиотеки в home/user/ibc/libgds.so, lib/libgds.so, opt/interbase.prev.lnk/lib/libgds.so, usr/lib/libgds.so H> Что теперь с ними делать? Как посмотреть в линуксе их версии.
Тут я помочь не смогу. Я виндузятник, не юниксолог.
Здравствуйте, Hiden, Вы писали:
H>Я нашел четыре библиотеки в home/user/ibc/libgds.so, lib/libgds.so, opt/interbase.prev.lnk/lib/libgds.so, usr/lib/libgds.so H>Что теперь с ними делать? Как посмотреть в линуксе их версии и как я понимаю лишние надо удалить или заменить, а какие будут лишние???
1. Откуда запускается сервак?
2. То что ты нашел — файлы или линки на файлы?
Навскидку — скорее всего оно у тебя хватает либо home/user/ibc/libgds.so, либо lib/libgds.so, но скорее всего второе.
Если сумееш натравить strace на запуск сервака БД — увидиш точно.
[RSDN@Home][1.2.0][alpha][668]
[В доме без жильцов — известных насекомых не обрящешь. [К. Прутков]]
Здравствуйте, Hiden, Вы писали: H>Попробывал использовать isc_dsql_execute2, но результат тот же: H>message length error (encountered 0, expected 32)
Покажи код.
Ты точно задал куды выходные параметры покласть?
Соощение точно при вызове isc_dsql_execute2 вылетает?
Здравствуйте, Tonal-, Вы писали:
T>Здравствуйте, Hiden, Вы писали: H>>Попробывал использовать isc_dsql_execute2, но результат тот же: H>>message length error (encountered 0, expected 32) T>Покажи код. T>Ты точно задал куды выходные параметры покласть? T>Соощение точно при вызове isc_dsql_execute2 вылетает?
while ((fetch_stat = isc_dsql_fetch(status_vector, &stmt, 1, sqlda)) == 0)
{
id[9] = '\0';
name[49] = '\0';
printf("\nid: %s", id);
printf("\nname: %s\n", name);
}
....
если в str1 записывать select то все работает и в id и name записываются данные, а если там указать execute то возникает такая ошибка
может действительно все дело в несовпадении версий клиента и сервера
P.S. Открой доку по функции isc_dsql_execute2 и внимательно вчитайся в эти величественные строки:
XSQLDA* in_xsqlda
Pointer to an optional, previously allocated XSQLDA used for input; if input parameters are not supplied, set this value to NULL
XSQLDA* out_xsqlda
Pointer to an optional, previously allocated XSQLDA used for results of statement execution; if not required, set this value to NULL
T>P.S. Открой доку по функции isc_dsql_execute2 и внимательно вчитайся в эти величественные строки:
T>
T>XSQLDA* in_xsqlda
T>Pointer to an optional, previously allocated XSQLDA used for input;
T>if input parameters are not supplied, set this value to NULL
T>
T>XSQLDA* out_xsqlda
T>Pointer to an optional, previously allocated XSQLDA used for results of statement execution;
T>if not required, set this value to NULL
Сделал как Вы сказали, немного изменил код:
...
int emp_no = 3;
char str1[BUFLEN];
isc_tr_handle trans = NULL;
long status[50];
sprintf(str1, "execute procedure sp %d;",emp_no);