Обсуждение: Hi there, new here and have question
Hi Everyone.
I'm just subscribe to the mailing list
I'm new to Postgresql and
I have a question
I intend to make a function that returns more than a row
I tried something like below
create function listofemployeebasedondepartment(id_dept int) $$
declare
resultset ??;
begin
select * into resultset from employee where id_dept = id_dept;
return resultset;
end
$$ language 'plpgsql';
I believe you get what I want
But I just couldn't finish the code since I miss something
I manage to find 'setof' but have no idea on how to use it
Any suggestion everyone?
Thank you,
Regards,
Hendra
Hi Hendra,
> create function listofemployeebasedondepartment(id_dept int) $$
> declare
> resultset ??;
> begin
> select * into resultset from employee where id_dept = id_dept;
> return resultset;
> end
> $$ language 'plpgsql';
>
> I believe you get what I want
> But I just couldn't finish the code since I miss something
> I manage to find 'setof' but have no idea on how to use it
>
> Any suggestion everyone?
>
Try something like this:
CREATE OR REPLACE FUNCTION listofemployeebasedondepartment(id_dept int)
RETURNS SETOF employee AS
$BODY$
BEGIN
RETURN QUERY
SELECT
*
FROM
employee
WHERE
id_dept = _id_dept;
RETURN;
END;
$BODY$
LANGUAGE 'plpgsql';
Jan
> Any suggestion everyone?
>
Sorry, i was to fast sending this email out ;-)
change the first parameter in the first line to '_id_depth'
CREATE OR REPLACE FUNCTION listofemployeebasedondepartment(_id_dept
int)
RETURNS SETOF employee AS
$BODY$
BEGIN
RETURN QUERY
SELECT
*
FROM
employee
WHERE
id_dept = _id_dept;
RETURN;
END;
$BODY$
LANGUAGE 'plpgsql';
Jan
> CREATE OR REPLACE FUNCTION listofemployeebasedondepartment(_id_dept
> int)
> RETURNS SETOF record AS
> $BODY$
> DECLARE
> empdata record;
> BEGIN
>
> RETURN QUERY
> SELECT
> e.*, d.department_name
> FROM
> employee e, dept d
> WHERE
> e.id_dept = d.id AND
> e.id_dept = _id_dept;
>
> RETURN;
> END;
> $BODY$
> LANGUAGE 'plpgsql';
>
> I can call it by
> SELECT listofemployeebasedondepartment(dept_id)
> and it gives me return value a set of record,
> but when I want to get just one field of those record,
> for example
> SELECT name FROM listofemployeebasedondepartment(dept_id)
> psql gives me error that I don't have column-list or something like
> that
> How to achieve such result?
>
hi hendry,
simple example:
CREATE OR REPLACE FUNCTION test1(_id int)
RETURNS SETOF record AS
$BODY$
DECLARE rec record;
BEGIN
FOR rec IN
SELECT
a.foo, b.bar
FROM
a, b
WHERE
a.id = _id
AND a.id = b.id
LOOP
RETURN NEXT rec;
END LOOP;
RETURN;
END;
$BODY$
LANGUAGE 'plpgsql'
you have to specify the columns when you call your function something
like this:
select * from test1(1) as (foo text, bar text);
Jan
|> |> -----Original Message----- |> From: pgsql-general-owner@postgresql.org [mailto:pgsql-general-owner@postgresql.org]On Behalf Of Hendra |> Sent: 8 juillet 2008 02:59 |> To: pgsql-general@postgresql.org |> Subject: [GENERAL] Hi there, new here and have question |> |> Hi Everyone. |> I'm just subscribe to the mailing list |> I'm new to Postgresql and |> I have a question |> |> I intend to make a function that returns more than a row |> I tried something like below |> |> create function listofemployeebasedondepartment(id_dept int) $$ |> declare |> resultset ??; |> begin |> select * into resultset from employee where id_dept = id_dept; |> return resultset; |> end |> $$ language 'plpgsql'; |> |> I believe you get what I want |> But I just couldn't finish the code since I miss something |> I manage to find 'setof' but have no idea on how to use it |> |> Any suggestion everyone? |> |> Thank you, |> Regards, |> Hendra I believe you are looking for this: http://www.postgresql.org/docs/8.3/interactive/xfunc-sql.html#AEN40331 Good day, Charles Simard