Thread:

From
"Mario Alberto Soto Cordones"
Date:
HI, i have a following function., but not work.



CREATE or replace FUNCTION get_nombre(numeric,numeric,text) RETURNS setof
cumaalu AS '    SELECT cunomalu,cuappalu,cuapmalu FROM cumaalu
WHERE siempalu = $1 and     cusesalu = $2 and     curutalu = $3;' LANGUAGE SQL;


the error say

PostgreSQL ha dicho: ERROR: function declared to return cumaalu does not
SELECT the right number of columns (49)
Your query:
CREATE FUNCTION get_nombre(numeric,numeric,text) RETURNS setof cumaalu AS '
SELECT cunomalu,cuappalu,cuapmalu FROM cumaalu
WHERE siempalu = $1 and
cusesalu = $2 and
curutalu = $3;
' LANGUAGE SQL


please any idea., i canṫ't use select * becose the table its very long.

thank







Re:

From
Stephan Szabo
Date:
On Fri, 21 Mar 2003, Mario Alberto Soto Cordones wrote:

> CREATE or replace FUNCTION get_nombre(numeric,numeric,text) RETURNS setof
> cumaalu AS '
>      SELECT cunomalu,cuappalu,cuapmalu FROM cumaalu
> WHERE siempalu = $1 and
>       cusesalu = $2 and
>       curutalu = $3;
>  ' LANGUAGE SQL;
>
>
> the error say
>
> PostgreSQL ha dicho: ERROR: function declared to return cumaalu does not
> SELECT the right number of columns (49)
> Your query:
> CREATE FUNCTION get_nombre(numeric,numeric,text) RETURNS setof cumaalu AS '
> SELECT cunomalu,cuappalu,cuapmalu FROM cumaalu
> WHERE siempalu = $1 and
> cusesalu = $2 and
> curutalu = $3;
> ' LANGUAGE SQL
>
>
> please any idea., i canṫ't use select * becose the table its very long.


If you really want to return just three of the 49 columns, make a
composite type (see CREATE TYPE AS (...) ) and return a set of that type.