SELECT statement in stored procedure

Started by Alain Rogeralmost 20 years ago2 messagesgeneral
Jump to latest
#1Alain Roger
raf.news@gmail.com

Hi,

I have the following stored procedure :

CREATE OR REPLACE FUNCTION immense_sp001(IN username VARCHAR, IN
strhash VARCHAR)
RETURNS SETOF accounts LANGUAGE plpgsql
AS '
DECLARE

Profile_Detected INTEGER :=0;
act accounts%ROWTYPE;
rec RECORD;

BEGIN

/* detect if the user logged in exists in database*/
SELECT count(*) INTO Profile_Detected FROM accounts
WHERE login=username AND pwd=strhash;

if (Profile_Detected = 1) then
SELECT INTO act * FROM accounts;
FOR rec IN select login,status from accounts LOOP
RETURN NEXT rec;
END LOOP;
end if;
return;
END;
';

so it should return only 2 fields from my account table (login and status).
however it does not work.

if i replace the line "FOR rec IN select login,status from accounts LOOP" by
FOR rec IN select * from accounts LOOP

it works but i get all fields from my accounts table.

So how can i get only login and status ?

thanks a lot,
Alain

#2Alan Hodgson
ahodgson@simkin.ca
In reply to: Alain Roger (#1)
Re: SELECT statement in stored procedure

On Saturday 01 July 2006 09:08, "Alain Roger" <raf.news@gmail.com> wrote:

it works but i get all fields from my accounts table.

So how can i get only login and status ?

Define a composite type that includes only those fields and return SETOF
that_new_type instead of SETOF accounts.

Or select login,status from function_name() instead of select *.

--
When we vote for taxes, we are voting to steal from our neighbors