powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Может тема и повторяется - но могут ли процедуры в FireBird возвращать рекордсеты?
21 сообщений из 21, страница 1 из 1
Может тема и повторяется - но могут ли процедуры в FireBird возвращать рекордсеты?
    #32436858
Фотография www.fun4me.narod.ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уважаемые программисты FireBird и Interbase!

Могу ли я, используя эту замечательную субд, написать такую хранимую процедуру, чтобы можно было вызвать её через ODBC в виде {call <имя_процедуры>(<список параметров>)} и, при этом, получить результат работы, точно такой же, как если бы это был обычный select?

То есть, чтобы процедура возвращала рекордсет.
...
Рейтинг: 0 / 0
Может тема и повторяется - но могут ли процедуры в FireBird возвращать рекордсеты?
    #32436869
Фотография fedd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
конечно!

и в этом суперволшебство интербейс! в мсскл так нельзя - получается много рекордсетов!

просто надо делать select * from storedproc(param1,param2)
...
Рейтинг: 0 / 0
Может тема и повторяется - но могут ли процедуры в FireBird возвращать рекордсеты?
    #32436871
Фотография www.fun4me.narod.ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В MSSQL получается один рекордсет - если поставить в начале процедуры SET NOCOUNT ON.
...
Рейтинг: 0 / 0
Может тема и повторяется - но могут ли процедуры в FireBird возвращать рекордсеты?
    #32436875
Фотография fedd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не знал ;) сори
...
Рейтинг: 0 / 0
Может тема и повторяется - но могут ли процедуры в FireBird возвращать рекордсеты?
    #32436877
noir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати,это "как вызывать", а писать тоже просто - suspend не есть сишный return. Строчку он возвращает, а процедура продолжает работать.
...
Рейтинг: 0 / 0
Может тема и повторяется - но могут ли процедуры в FireBird возвращать рекордсеты?
    #32436878
Фотография fedd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
то есть можно сделать много раз fetch из разных курсоров вперемешку - и получится один рекордсет??
...
Рейтинг: 0 / 0
Может тема и повторяется - но могут ли процедуры в FireBird возвращать рекордсеты?
    #32436880
Roman Ignatiev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Могу ли я, используя эту замечательную субд...
Вах!!
Через call - не можешь. А вот просто написать select * from mySP(param1, :param2, ...) - вполне :). В процедуре должен быть SUSPEND, он выталкивает выходные параметры в рекордсет. Сколько раз вызовется - столько строк и будет. Обычно вызывают его в for select...
...
Рейтинг: 0 / 0
Может тема и повторяется - но могут ли процедуры в FireBird возвращать рекордсеты?
    #32436886
Фотография www.fun4me.narod.ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
То есть, получается, что если я в приложении для MSSQL все запросы сделаю через RPC-вызовы хранимых процедур, то при переезде на FireBird понадобится переписать только сами хранимые процедуры и заменить, например, {call %s} на select * from %s. Где %s - вызов хранимой процедуры.
И в процедурах можно будет записать запросы наиболее оптимальным для Firebird и MSSQL образом, а клиент будет полностью независим от базы данных. Только с ораклом он так работать не сможет....
...
Рейтинг: 0 / 0
Может тема и повторяется - но могут ли процедуры в FireBird возвращать рекордсеты?
    #32436895
Фотография fedd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кажется, что так - лично я одибиси не использую... может, там методы разные для call и для select - не знаю..

а на мой вопрос ответьте плз...
...
Рейтинг: 0 / 0
Может тема и повторяется - но могут ли процедуры в FireBird возвращать рекордсеты?
    #32436904
Фотография Dnico
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fedd
Язное дело ...

Best regards,
Dnico.
...
Рейтинг: 0 / 0
Может тема и повторяется - но могут ли процедуры в FireBird возвращать рекордсеты?
    #32436906
Paul A. Kuptsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
feddто есть можно сделать много раз fetch из разных курсоров вперемешку - и получится один рекордсет??

А если кол-во колонок в рекордсете разный будет и ти, что получиться?
...
Рейтинг: 0 / 0
Может тема и повторяется - но могут ли процедуры в FireBird возвращать рекордсеты?
    #32436908
Фотография www.fun4me.narod.ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор
то есть можно сделать много раз fetch из разных курсоров вперемешку - и получится один рекордсет??

Это ко мне вопрос?

В MSSQL при установке SET NOCOUNT ON может и вернётся много рекордсатов, если процедура будет иметь вид

select * from A

select * from B

select * from C

но приложение, работающее через ODBC получит только первый рекордсет (select * from A). А если будет SET NOCOUNT OFF, то приложение, скорее всего, ничего не полуит, поскольку первым рекордсетом будет информация о количестве строк. В хранимых процедурах обычно данные формируются во временных таблицах, а в конце стоит один финальный select "в никуда", который возвращает данные клиенту.
...
Рейтинг: 0 / 0
Может тема и повторяется - но могут ли процедуры в FireBird возвращать рекордсеты?
    #32436909
Фотография Dnico
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторА если кол-во колонок в рекордсете разный будет и ти, что получиться?
То что напишешь, то и получится. Выходной рекордсет - формируется так как ты захочешь.

Best regards,
Dnico.
...
Рейтинг: 0 / 0
Может тема и повторяется - но могут ли процедуры в FireBird возвращать рекордсеты?
    #32436913
Фотография fedd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Павел, вот и я про то же! это я и хочу спросить www.fun4me.narod.ru - что будет с mssql при этом?
...
Рейтинг: 0 / 0
Может тема и повторяется - но могут ли процедуры в FireBird возвращать рекордсеты?
    #32436919
Фотография www.fun4me.narod.ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если написать в хранимой процедуре команды для возврата многих результатов - то будет много рекордсетов. Разных. Программа скорее всего обработает только один - первый. В QA, например, будут выданы результаты в нескольких таблицах.
...
Рейтинг: 0 / 0
Может тема и повторяется - но могут ли процедуры в FireBird возвращать рекордсеты?
    #32436922
Фотография fedd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
во, пока писал - ответ получил.\r
\r
я вобще-то его получал уже, но подумал, что если сказать сет нокаунт офф, то не надо будет делать nextrecordset, а все будет в одном рекордсете...
...
Рейтинг: 0 / 0
Может тема и повторяется - но могут ли процедуры в FireBird возвращать рекордсеты?
    #32436923
Фотография www.fun4me.narod.ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Но не разу не встречал, где бы это надо было.
Зато если внутри хранимки работать как уходно с курсорами и временными таблицами, но данных ЯВНО не возвращать, то при установленной опции SET NOCOUNT ON это не повлияет на количество рекордсетов.
...
Рейтинг: 0 / 0
Может тема и повторяется - но могут ли процедуры в FireBird возвращать рекордсеты?
    #32436930
Фотография fedd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nextRecordset - это ADODB ;)
...
Рейтинг: 0 / 0
Может тема и повторяется - но могут ли процедуры в FireBird возвращать рекордсеты?
    #32436932
Фотография www.fun4me.narod.ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если сказать SET NOCUUNT OFF - получишь кучу лишних рекордсетов, замучаешься их обрабатывать.
...
Рейтинг: 0 / 0
Может тема и повторяется - но могут ли процедуры в FireBird возвращать рекордсеты?
    #32436934
Фотография fedd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
понял - нокаунт отключает первый бутафорский рекордсет с количеством строк.
...
Рейтинг: 0 / 0
Может тема и повторяется - но могут ли процедуры в FireBird возвращать рекордсеты?
    #32436936
Фотография www.fun4me.narod.ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну то есть после каждой операции в процедуре, грубо говоря, на клиента будет лететь рекордсет со служебной информацией.
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Может тема и повторяется - но могут ли процедуры в FireBird возвращать рекордсеты?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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