Re: Functions return a select in a table, which data type I - Mailing list pgsql-sql

From Markus Bertheau
Subject Re: Functions return a select in a table, which data type I
Date
Msg-id 1099040938.2653.3.camel@dicaprio.akademie1.de
Whole thread Raw
In response to Re: Functions return a select in a table, which data type I  (Markus Bertheau <twanger@bluetwanger.de>)
List pgsql-sql
В Птн, 22.10.2004, в 15:38, Markus Bertheau пишет:

> CREATE TYPE foo_type AS (cod_aluno TEXT, nome TEXT, cpf TEXT);
> CREATE FUNCTION bar(int4)
>     RETURNS SETOF foo_type
>     LANGUAGE 'SQL'
That should be LANGUAGE 'plpgsql'
>     AS '
> DECLARE
>     var_rec foo_type;
> BEGIN
>     FOR var_rec IN SELECT cod_aluno, nome, cpf FROM table WHERE ...     LOOP
>         RETURN NEXT var_rec;
>     END LOOP;
>     RETURN;
> END;
> ';

And if you want that function in SQL, there are two kinds of situations,
for which the solutions differ: If the record structure that the
function should return is the same as the structure of a table, you can
use the table name as the type. If this is not the case, you have to
create a custom type:

CREATE FUNCTION bar(int4)RETURNS table_name or custom_type_nameLANGUAGE 'SQL'AS '
SELECT whatever FROM table WHERE field = $1 AND foo;
END;
';

$1 is the value of the first argument.

--
Markus Bertheau <twanger@bluetwanger.de>



pgsql-sql by date:

Previous
From: Markus Schaber
Date:
Subject: Re: Select Instead on a table
Next
From: Wei Weng
Date:
Subject: Re: How do you compare (NULL) and (non-NULL)?