Re: Returning more than one value from a stored procedure

Поиск
Список
Период
Сортировка
От Thomas Kellerer
Тема Re: Returning more than one value from a stored procedure
Дата
Msg-id i14e8n$e12$1@dough.gmane.org
обсуждение исходный текст
Ответ на Re: Returning more than one value from a stored procedure  (Thomas Kellerer <spam_eater@gmx.net>)
Ответы Re: Returning more than one value from a stored procedure  (Atif Jung <atifjung@gmail.com>)
Список pgsql-novice
Thomas Kellerer, 08.07.2010 13:43:
> Atif Jung, 08.07.2010 11:51:
>> Hi,
>> I'm having difficulty working out the correct syntax to return more than
>> one value from a stored procedure. I wish to return an INTGER and a
>> string
>> CREATE or REPLACE FUNCTION testproc(val1 (CHAR9), val2 CHAR(4)) RETURNS
>> INTEGER, CHAR(640) AS $$
>> The above is incorrect but what is the correct syntax?
>> Thanks
>>
>> Atif
>>
>>
>
> If you don't need the power of pl/pgSQL to calculate your result, a
> simple SQL function should work:
>
> CREATE OR REPLACE FUNCTION testproc(val1 char(9), val2 char(4))
> RETURNS TABLE(id integer, some_value text)
> AS
> $$
> SELECT 42, 'your value'::text;
> $$
> LANGUAGE sql;
>

I did hit "Send" too quickly...

If you do need calculations in there (and thus the power of PL/pgSQL), you can do that as well:

CREATE OR REPLACE FUNCTION testproc(val1 char(9), val2 char(4))
RETURNS TABLE(id integer, some_value text)
AS
$$
DECLARE
   return_int integer;
   return_text text;
BEGIN
   return_int := 21 * 2;
   return_text := 'Your input value: ' || val1;

   RETURN QUERY SELECT return_int, return_text;
END
$$
LANGUAGE plpgsql;

Both can be used like this:  select * from testproc('x', 'y')



В списке pgsql-novice по дате отправления:

Предыдущее
От: Thomas Kellerer
Дата:
Сообщение: Re: Returning more than one value from a stored procedure
Следующее
От: Atif Jung
Дата:
Сообщение: Re: Returning more than one value from a stored procedure