powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Возвращаемое значание в процедуре.
8 сообщений из 8, страница 1 из 1
Возвращаемое значание в процедуре.
    #35633951
NewLine
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет.

Я возвращаю данные из двух таблиц вот такой процедурой.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
CREATE OR REPLACE FUNCTION a_get_all_client()
  RETURNS SETOF companyjoinrequisites AS
$BODY$select * from company c,requisites r 
where c.id = r.compid;
$BODY$
  LANGUAGE 'sql' VOLATILE
  COST  100 
  ROWS  1000 ;
ALTER FUNCTION a_get_all_client() OWNER TO "admin";
В качестве возвращаемого значения использую собственный тип companyjoinrequisites.
На самом деле мне нужно, чтоб данные возвращались в виде таблицы.
И пока я нашел тока тако способ, но он очень не удобный еcли ты добавляешь новую колонку в таблицу приходится переделывать тип(удалять и снова создавать)
Есть какой-нить стандартный тип (типа record) но чтоб возвращаемые данные были в виде таблицы?

Спасибо.
...
Рейтинг: 0 / 0
Возвращаемое значание в процедуре.
    #35634039
Kruchinin Pahan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NewLine
Есть какой-нить стандартный тип (типа record) но чтоб возвращаемые данные были в виде таблицы?

Спасибо.

Я пришел к тому, что возвращаю именно таблицу.
CREATE TABLE Types.Foo ... ;
CREATE OR REPLACE FUNCTION a_get_all_client()
RETURNS SETOF Types.Foo AS ... ;

Причем, если таблицы с нужным содержимым нет в рабочей схеме, создаю фиктивную табличку в отдельной схеме Types.
Пока подход себя оправдывает.
...
Рейтинг: 0 / 0
Возвращаемое значание в процедуре.
    #35634128
Кифирчик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
есть ещё такой вариант
http://sql.ru/forum/actualthread.aspx?tid=580735
...
Рейтинг: 0 / 0
Возвращаемое значание в процедуре.
    #35639939
NewLine
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо.
Решил пользоваться типизированными таблицами как Kruchinin Pahan .
Kruchinin PahanЯ пришел к тому, что возвращаю именно таблицу.
CREATE TABLE Types.Foo ... ;
CREATE OR REPLACE FUNCTION a_get_all_client()
RETURNS SETOF Types.Foo AS ... ;

Пока оправдывает.
...
Рейтинг: 0 / 0
Возвращаемое значание в процедуре.
    #35641829
Quadrix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Out-параметры не пробовали? Например так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
CREATE OR REPLACE FUNCTION test_get_table(OUT id INT, OUT name VARCHAR) RETURNS SETOF record AS
$body$
  id =  0 ;
  name = 'Вася';
  RETURN NEXT;
  id =  1 ;
  name = 'Петя';
  RETURN NEXT;
  RETURN;
$body$
LANGUAGE 'plpgsql';

SELECT * FROM test_get_table();

либо представление сделать из этого запроса ;)
P.S. способ с out-параметрами работает начиная с версии 8.2, если не ошибаюсь
...
Рейтинг: 0 / 0
Возвращаемое значание в процедуре.
    #35647845
NewLine
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
C out параметрами можно, но если очень много данных, то все их прописывать нуно.
А так в таблицу типизированную добавляешь и все.
Out параметры это колонки таблицы?
...
Рейтинг: 0 / 0
Возвращаемое значание в процедуре.
    #35647902
Артем_84
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Запрос из Вашего первого поста можно смело обернуть вьюшкой, т.е. обойтись без ф-и.

кстати, после этого эту вьюшку можно использовать как тип возвращаемого значения из функции.
...
Рейтинг: 0 / 0
Возвращаемое значание в процедуре.
    #35649751
Quadrix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
NewLineOut параметры это колонки таблицы?
да
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Возвращаемое значание в процедуре.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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