Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Динамический запрос в функции / 9 сообщений из 9, страница 1 из 1
17.04.2007, 16:04
    #34467123
xxman
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамический запрос в функции
Создал функцию
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
CREATE OR REPLACE FUNCTION test1(text) RETURNS SETOF RECORD AS
'
DECLARE 
 r RECORD;
BEGIN 
 FOR r IN EXECUTE ($1) LOOP
  RETURN NEXT r;
 END LOOP;

 RETURN;
END
'
LANGUAGE 'plpgsql' VOLATILE;
Вызываю
Код: plaintext
1.
SELECT * FROM test1('SELECT * FROM table1') AS (c1 INTEGER, c2 INTEGER)
Вроде как бы динамический запрос, только в test1() надо передавать разные запросы, т.е. AS (поля, типы) не известно.
Совсем запутался, замкнутый круг какой-то
...
Рейтинг: 0 / 0
17.04.2007, 16:28
    #34467170
СергейК
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамический запрос в функции
xxman
Вроде как бы динамический запрос, только в test1() надо передавать разные запросы, т.е. AS (поля, типы) не известно.
Совсем запутался, замкнутый круг какой-то

V PG opisanie vozvrashaemyh zapisei (tipy i nazvania kolonok) doljny byt' dany libo v opredelenii functsii (s pomoschiu OUT parametrov), libo pri vyzove etoi functsii (pri pomoschi AS (...) ), po drugomu nikak.
...
Рейтинг: 0 / 0
17.04.2007, 18:22
    #34467470
xxman
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамический запрос в функции
То есть только на клиенте формировать? Как в SQL Server не получится?
...
Рейтинг: 0 / 0
18.04.2007, 07:14
    #34468189
Serik Akhmetov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамический запрос в функции
xxmanТо есть только на клиенте формировать? Как в SQL Server не получится?На клиенте можно сразу формировать
Код: plaintext
SELECT * FROM table1
Как в SQL Server не знаю.

А в чем вообще глубокий смысл такой конструкции ?
...
Рейтинг: 0 / 0
18.04.2007, 08:25
    #34468257
xxman
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамический запрос в функции
В SQL Server можно написать sp_executesql "запрос", и не надо заренее определять названия и типы полей.
Serik AkhmetovА в чем вообще глубокий смысл такой конструкции ?
В этом запросе смысла особого нет, привел просто для примера, на самом деле запрос намного сложнее. В MS SQL делал подобное - в хранимой процедуре формировал строку SELECT и передавал в EXECUTE. Здесь же столкнулся с проблемой, а на клиенте как-то не хочется запрос формировать..
...
Рейтинг: 0 / 0
18.04.2007, 09:49
    #34468450
st_serg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамический запрос в функции
отдавайте клиенту рефкурсоры
...
Рейтинг: 0 / 0
18.04.2007, 15:07
    #34469991
xxman
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамический запрос в функции
st_sergотдавайте клиенту рефкурсоры
Что за зверь - рефкурсор? Запрос где будет формироваться, на клиенте?
...
Рейтинг: 0 / 0
18.04.2007, 16:08
    #34470265
st_serg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамический запрос в функции
где захотите, там и будет формироваться, про курсоры написано в документации (37.8. Cursors), насчет отличия от курсоров в MSSQL я не в курсе.
...
Рейтинг: 0 / 0
18.04.2007, 17:58
    #34470787
xxman
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Динамический запрос в функции
Спасибо, попробую разобраться
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Динамический запрос в функции / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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