Ð ÐÑÐ, 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_name
        LANGUAGE 'SQL'
        AS '
SELECT whatever FROM table WHERE field = $1 AND foo;
END;
';

$1 is the value of the first argument.

-- 
Markus Bertheau <[EMAIL PROTECTED]>


---------------------------(end of broadcast)---------------------------
TIP 3: if posting/reading through Usenet, please send an appropriate
      subscribe-nomail command to [EMAIL PROTECTED] so that your
      message can get through to the mailing list cleanly

Reply via email to