SQLRU.net
Разработка приложений баз данных

Начало » Использование СУБД » Firebird, HQbird, InterBase » C API и получение значения, возвращаемого INSERT ... RETURNING
C API и получение значения, возвращаемого INSERT ... RETURNING [сообщение #5139] Thu, 20 June 2024 10:22 Переход к следующему сообщению
unif в настоящее время не в онлайне  unif
Сообщений: 2
Зарегистрирован: June 2024
Junior Member
Добрый день.
Не получается разобраться как с помощью функций C API Firebird получить значение, возвращаемое запросом INSERT ... RETURNING. Например
INSERT INTO FTABLE (FID, FNUM, BTYPE, FDATE, FVER) VALUES (NEXT VALUE FOR GNR2, 1, '101', '17.11.2023', 2713) RETURNING FID
Вызываю
isc_dsql_exec_immed2(stat, db, trans, 0, sqlstr, SQL_DIALECT_V6, NULL, osqlda)
В osqlda подготовлена одна XSQLVAR типа, соответствующего FID. Функция выполняется успешно, запись в таблицу добавляется, но в XSQLVAR возвращается 0, а не актуальный FID добавленной записи.

Как можно получить это возвращаемое значение? В isql FID возвращается. Может я вообще не той функцией пытаюсь это реализовать, хотя по описанию она подходит.

И еще вопрос - документация на API везде попадается от Interbase 6. А более актуальной версии для Firebird 3/4/5 нет?
Re: C API и получение значения, возвращаемого INSERT ... RETURNING [сообщение #5140 является ответом на сообщение #5139] Thu, 20 June 2024 11:49 Переход к предыдущему сообщениюПереход к следующему сообщению
МП в настоящее время не в онлайне  МП
Сообщений: 874
Зарегистрирован: August 2022
Географическое положение: бурятский тун...
Senior Member
isc_dsql_exec_immed2, он для синглтона.
в старых версиях оно прокатит, а в новых версиях RETURNING возвращает не синглтон, а курсор.
соответственно дёргать надо isc_dsql_execute2.

[Обновления: Thu, 20 June 2024 11:49]

Известить модератора

Re: C API и получение значения, возвращаемого INSERT ... RETURNING [сообщение #5141 является ответом на сообщение #5140] Thu, 20 June 2024 14:15 Переход к предыдущему сообщениюПереход к следующему сообщению
unif в настоящее время не в онлайне  unif
Сообщений: 2
Зарегистрирован: June 2024
Junior Member
Благодарю. С isc_dsql_execute2 действительно работает
Re: C API и получение значения, возвращаемого INSERT ... RETURNING [сообщение #5142 является ответом на сообщение #5140] Thu, 20 June 2024 15:08 Переход к предыдущему сообщениюПереход к следующему сообщению
SD в настоящее время не в онлайне  SD
Сообщений: 391
Зарегистрирован: August 2022
Senior Member
МП писал(а) Thu, 20 June 2024 10:49
isc_dsql_exec_immed2, он для синглтона.
в старых версиях оно прокатит, а в новых версиях RETURNING возвращает не синглтон, а курсор.
соответственно дёргать надо isc_dsql_execute2.
Вообще-то isc_dsql_exec_immed2 раньше отлично работал и для курсоров класса "select * from rdb$database". Возможно, его просто сломали в новых версиях.
Re: C API и получение значения, возвращаемого INSERT ... RETURNING [сообщение #5143 является ответом на сообщение #5142] Thu, 20 June 2024 17:15 Переход к предыдущему сообщениюПереход к следующему сообщению
МП в настоящее время не в онлайне  МП
Сообщений: 874
Зарегистрирован: August 2022
Географическое положение: бурятский тун...
Senior Member
SD
Вообще-то isc_dsql_exec_immed2 раньше отлично работал и для курсоров класса "select * from rdb$database". Возможно, его просто сломали в новых версиях.
на 3-ке оно и сейчас работает.
если дойдут ноги, пощупаю на 4-ке и 5-ке.
Re: C API и получение значения, возвращаемого INSERT ... RETURNING [сообщение #5144 является ответом на сообщение #5143] Thu, 20 June 2024 17:28 Переход к предыдущему сообщениюПереход к следующему сообщению
МП в настоящее время не в онлайне  МП
Сообщений: 874
Зарегистрирован: August 2022
Географическое положение: бурятский тун...
Senior Member
на 4-ке с троечным клиентом тоже работает.
Re: C API и получение значения, возвращаемого INSERT ... RETURNING [сообщение #5145 является ответом на сообщение #5144] Thu, 20 June 2024 17:58 Переход к предыдущему сообщению
МП в настоящее время не в онлайне  МП
Сообщений: 874
Зарегистрирован: August 2022
Географическое положение: бурятский тун...
Senior Member
на 4-ке работает и с родным клиентом, и с 5-м.
Предыдущая тема: Коллекция скриптов для одношаговой установки Firebird или HQbird на всех популярных Linux
Следующая тема: CHARACTER SET WIN1251 is not defined (FB 1.5 Emb)
Переход к форуму:
  


Текущее время: Fri Oct 04 05:49:05 GMT+3 2024

Общее время, затраченное на создание страницы: 0.01835 секунд