[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Чтоб функция вернула несколько значений
olgatcpip
Здравствуйте.

Как написать функцию на postgresql чтоб она вернула несколько значений

Пример:
таблица
id | date| text
-----------------
id- PK= nextval('acm_comments_file_id_seq'::regclass)
функция для добавления строки в таблицу:

SQL
begin insert into acm_comments_file (text)
values($1);
return ('now'::text)::timestamp(6) with time zone;
end


сейчас она возвращает дату. А мне нужно, чтоб она ещё и ид новый вернулв

знаю как вернуть id :
SQL
return currval('acm_comments_file_id_seq');

Но мне нужно и дата, и ид

Подскажите как это сделать?




Спустя 33 минуты (6.05.2009 - 09:10) olgatcpip написал(а):
Я поняла как!

возвращаемый тип надо было сменить на record (не знаю что оно означает, но сработало.)

получилось как-то так:
SQL
CREATE OR REPLACE FUNCTION "public"."acm_f_add_comment" (_id_np integer, _id_file integer, _comment varchar, out _date timestamp, out _id integer) RETURNS record AS $body$
begin insert into acm_comments_file (id_np,id_file,COMMENT)
values($1,$2,$3);
-- return currval('acm_comments_file_id_seq');
-- return ('now'::text)::timestamp(6) with time zone;
_date = ('now'::text)::timestamp(6) with time zone;
_id = currval('acm_comments_file_id_seq'::regclass);

end
$body$
LANGUAGE 'plpgsql'
VOLATILE
CALLED ON NULL INPUT
SECURITY INVOKER;

Спустя 3 часа, 7 минут, 39 секунд (6.05.2009 - 12:17) sergeiss написал(а):
Не обязательно, чтобы был тип record. Он используется, если возвращается строка из выборки.
А если надо просто вернуть некий произвольный набор значений, то надо создать новый, пользовательский тип через CREATE TYPE. По сути, эта фигня сильно похожа на struct в языке Си.
В конце функции пишем "RETURNS SETOF новый_тип" и пользуемся в своё удовольствие.

Вот только я после создания этих пользовательских типов почему-то пока не нашел, как их можно посмотреть smile.gif Удалить, модифицировать можно. А посмотреть....

PS. kirik - обрати внимание! Это просто ну очень полезная фича. Которая существенно расширяет возможности использования БД.


_____________
Ласковое слово и кошке приятно... Плюсик в карму сойдет wink.gif
*smarty дока - новая любовь
Моё рукотворение ругайте, хвалите smile.gif
Веду маленький блог
в этом блоге публикую новые работы
WMR217126627282 wink.gif

Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.