|
|
|
Может тема и повторяется - но могут ли процедуры в FireBird возвращать рекордсеты?
|
|||
|---|---|---|---|
|
#18+
Уважаемые программисты FireBird и Interbase! Могу ли я, используя эту замечательную субд, написать такую хранимую процедуру, чтобы можно было вызвать её через ODBC в виде {call <имя_процедуры>(<список параметров>)} и, при этом, получить результат работы, точно такой же, как если бы это был обычный select? То есть, чтобы процедура возвращала рекордсет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2004, 18:49 |
|
||
|
Может тема и повторяется - но могут ли процедуры в FireBird возвращать рекордсеты?
|
|||
|---|---|---|---|
|
#18+
конечно! и в этом суперволшебство интербейс! в мсскл так нельзя - получается много рекордсетов! просто надо делать select * from storedproc(param1,param2) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2004, 18:55 |
|
||
|
Может тема и повторяется - но могут ли процедуры в FireBird возвращать рекордсеты?
|
|||
|---|---|---|---|
|
#18+
В MSSQL получается один рекордсет - если поставить в начале процедуры SET NOCOUNT ON. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2004, 18:58 |
|
||
|
Может тема и повторяется - но могут ли процедуры в FireBird возвращать рекордсеты?
|
|||
|---|---|---|---|
|
#18+
не знал ;) сори ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2004, 18:59 |
|
||
|
Может тема и повторяется - но могут ли процедуры в FireBird возвращать рекордсеты?
|
|||
|---|---|---|---|
|
#18+
Кстати,это "как вызывать", а писать тоже просто - suspend не есть сишный return. Строчку он возвращает, а процедура продолжает работать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2004, 19:00 |
|
||
|
Может тема и повторяется - но могут ли процедуры в FireBird возвращать рекордсеты?
|
|||
|---|---|---|---|
|
#18+
то есть можно сделать много раз fetch из разных курсоров вперемешку - и получится один рекордсет?? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2004, 19:00 |
|
||
|
Может тема и повторяется - но могут ли процедуры в FireBird возвращать рекордсеты?
|
|||
|---|---|---|---|
|
#18+
Могу ли я, используя эту замечательную субд... Вах!! Через call - не можешь. А вот просто написать select * from mySP(param1, :param2, ...) - вполне :). В процедуре должен быть SUSPEND, он выталкивает выходные параметры в рекордсет. Сколько раз вызовется - столько строк и будет. Обычно вызывают его в for select... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2004, 19:01 |
|
||
|
Может тема и повторяется - но могут ли процедуры в FireBird возвращать рекордсеты?
|
|||
|---|---|---|---|
|
#18+
То есть, получается, что если я в приложении для MSSQL все запросы сделаю через RPC-вызовы хранимых процедур, то при переезде на FireBird понадобится переписать только сами хранимые процедуры и заменить, например, {call %s} на select * from %s. Где %s - вызов хранимой процедуры. И в процедурах можно будет записать запросы наиболее оптимальным для Firebird и MSSQL образом, а клиент будет полностью независим от базы данных. Только с ораклом он так работать не сможет.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2004, 19:07 |
|
||
|
Может тема и повторяется - но могут ли процедуры в FireBird возвращать рекордсеты?
|
|||
|---|---|---|---|
|
#18+
кажется, что так - лично я одибиси не использую... может, там методы разные для call и для select - не знаю.. а на мой вопрос ответьте плз... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2004, 19:16 |
|
||
|
Может тема и повторяется - но могут ли процедуры в FireBird возвращать рекордсеты?
|
|||
|---|---|---|---|
|
#18+
fedd Язное дело ... Best regards, Dnico. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2004, 19:21 |
|
||
|
Может тема и повторяется - но могут ли процедуры в FireBird возвращать рекордсеты?
|
|||
|---|---|---|---|
|
#18+
feddто есть можно сделать много раз fetch из разных курсоров вперемешку - и получится один рекордсет?? А если кол-во колонок в рекордсете разный будет и ти, что получиться? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2004, 19:21 |
|
||
|
Может тема и повторяется - но могут ли процедуры в FireBird возвращать рекордсеты?
|
|||
|---|---|---|---|
|
#18+
автор то есть можно сделать много раз fetch из разных курсоров вперемешку - и получится один рекордсет?? Это ко мне вопрос? В MSSQL при установке SET NOCOUNT ON может и вернётся много рекордсатов, если процедура будет иметь вид select * from A select * from B select * from C но приложение, работающее через ODBC получит только первый рекордсет (select * from A). А если будет SET NOCOUNT OFF, то приложение, скорее всего, ничего не полуит, поскольку первым рекордсетом будет информация о количестве строк. В хранимых процедурах обычно данные формируются во временных таблицах, а в конце стоит один финальный select "в никуда", который возвращает данные клиенту. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2004, 19:23 |
|
||
|
Может тема и повторяется - но могут ли процедуры в FireBird возвращать рекордсеты?
|
|||
|---|---|---|---|
|
#18+
авторА если кол-во колонок в рекордсете разный будет и ти, что получиться? То что напишешь, то и получится. Выходной рекордсет - формируется так как ты захочешь. Best regards, Dnico. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2004, 19:23 |
|
||
|
Может тема и повторяется - но могут ли процедуры в FireBird возвращать рекордсеты?
|
|||
|---|---|---|---|
|
#18+
Павел, вот и я про то же! это я и хочу спросить www.fun4me.narod.ru - что будет с mssql при этом? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2004, 19:25 |
|
||
|
Может тема и повторяется - но могут ли процедуры в FireBird возвращать рекордсеты?
|
|||
|---|---|---|---|
|
#18+
Если написать в хранимой процедуре команды для возврата многих результатов - то будет много рекордсетов. Разных. Программа скорее всего обработает только один - первый. В QA, например, будут выданы результаты в нескольких таблицах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2004, 19:28 |
|
||
|
Может тема и повторяется - но могут ли процедуры в FireBird возвращать рекордсеты?
|
|||
|---|---|---|---|
|
#18+
во, пока писал - ответ получил.\r \r я вобще-то его получал уже, но подумал, что если сказать сет нокаунт офф, то не надо будет делать nextrecordset, а все будет в одном рекордсете... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2004, 19:31 |
|
||
|
Может тема и повторяется - но могут ли процедуры в FireBird возвращать рекордсеты?
|
|||
|---|---|---|---|
|
#18+
Но не разу не встречал, где бы это надо было. Зато если внутри хранимки работать как уходно с курсорами и временными таблицами, но данных ЯВНО не возвращать, то при установленной опции SET NOCOUNT ON это не повлияет на количество рекордсетов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2004, 19:31 |
|
||
|
Может тема и повторяется - но могут ли процедуры в FireBird возвращать рекордсеты?
|
|||
|---|---|---|---|
|
#18+
nextRecordset - это ADODB ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2004, 19:33 |
|
||
|
Может тема и повторяется - но могут ли процедуры в FireBird возвращать рекордсеты?
|
|||
|---|---|---|---|
|
#18+
Если сказать SET NOCUUNT OFF - получишь кучу лишних рекордсетов, замучаешься их обрабатывать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2004, 19:33 |
|
||
|
Может тема и повторяется - но могут ли процедуры в FireBird возвращать рекордсеты?
|
|||
|---|---|---|---|
|
#18+
понял - нокаунт отключает первый бутафорский рекордсет с количеством строк. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2004, 19:34 |
|
||
|
|

start [/forum/topic.php?fid=40&msg=32436906&tid=1579062]: |
0ms |
get settings: |
8ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
186ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
| others: | 234ms |
| total: | 519ms |

| 0 / 0 |
