|
Возвращение результата из временной таблицы в процедуре
|
|||
---|---|---|---|
#18+
Здравствуйте Подскажите, пожалуйста, как правильно возвращать результат с временной таблицы через процедуру? Есть запрос Код: plsql 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. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42.
Процедура применяется, но при ее вызове пишет, что не возможно вывести результат Подскажите, как это правильно сделать? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.04.2021, 10:38 |
|
Возвращение результата из временной таблицы в процедуре
|
|||
---|---|---|---|
#18+
1) зачем вы удаляете временную таблицу? Боитесь, что в сессии, кто-то её еще раз использует? Тогда лучше CTE использовать 2) возврат из процедуры или функции можно оформить через возврат табличного типа Код: sql 1. 2.
и пишите что-то вроде этого Код: sql 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2021, 09:35 |
|
Возвращение результата из временной таблицы в процедуре
|
|||
---|---|---|---|
#18+
jango77, процедуры в PostgreSQL не возвращают значения . ... |
|||
:
Нравится:
Не нравится:
|
|||
19.04.2021, 13:19 |
|
Возвращение результата из временной таблицы в процедуре
|
|||
---|---|---|---|
#18+
Всем привет .. Я делал так: delimiter # CREATE or replace function ampg_MyFunction( in param1 integer, .... ) returns SETOF REFCURSOR as $$ declare _ref1 constant refcursor := '_ref1'; _ref2 constant refcursor := '_ref2'; begin ...... OPEN _ref1 FOR select bla-bla-bla from mytable1 where ....; return next _ref1; OPEN _ref2 FOR select ops-ops-ops from mytable2 where ....; return next _ref2; ... rerturn; end; $$ language plpgSQL VOLATILE # Вызов и получение результата- set VERBOSITY terse do $$ declare ref1 refcursor := '_ref1'; ref2 refcursor := '_ref2'; rec1 record; rec2 record; begin perform public.ampg_Myfinction(1, ...); loop fetch ref1 into rec1; exit when not found; raise notice '%', rec1; end loop; loop fetch ref2 into rec2; exit when not found; raise notice '%', rec2; end loop; end; $$ language plpgsql; или так select * from public.ampg_MyFunction(1, ...); FETCH ALL FROM _ref1; FETCH ALL FROM _ref2; ... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2021, 10:38 |
|
Возвращение результата из временной таблицы в процедуре
|
|||
---|---|---|---|
#18+
jango77 Процедура применяется, но при ее вызове пишет, что не возможно вывести результат Подскажите, как это правильно сделать? Для начала поймите действительно ли вам нужна процедура (с управлением транзакциями) в этом месте? (а не функция без транзакций которая может отдавать результат). -- Maxim Boguk лучшая поддержка PostgreSQL: dataegret.ru ... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2021, 11:37 |
|
Возвращение результата из временной таблицы в процедуре
|
|||
---|---|---|---|
#18+
jango77, если по каким-то причинам не устраивает функция (например, внутри процедуры необходимо фиксировать или откатывать транзакцию), то можно просто не удалять созданную временную таблицу. Она никуда не денется после завершения процедуры. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.04.2021, 15:30 |
|
|
start [/forum/topic.php?fid=53&msg=40063711&tid=1994066]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
53ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
41ms |
get tp. blocked users: |
1ms |
others: | 311ms |
total: | 444ms |
0 / 0 |