On fim, 2007-05-24 at 13:59 -0700, novnov wrote: > I've written many stored procedures in ms sql and a good many functions in > postgres, but I'm rather unsure of how to get a list back from a postgres > function which is not based on a table. Example from sql server: > > set ANSI_NULLS ON > set QUOTED_IDENTIFIER ON > GO > ALTER PROCEDURE [dbo].[procPatient] > @PatStatusID int = 0 > AS > BEGIN > SELECT PatID, PatFName + ' ' + PatLName as pname FROM tblPatient WHERE > PatStatusID = @PatStatusID > END > > Output from the sproc above is like > PatID pname > 123 Merton Baffled > 129 Jim Puzzled
test=# create table pats (patid int, patfname text, patlname text, patstatus int); CREATE TABLE test=# insert into pats values (123,'Merton','Baffled',2); INSERT 0 1 test=# insert into pats values (129,'Jim','Puzzled',2); INSERT 0 1 test=# insert into pats values (132,'Joe','Confused',1); INSERT 0 1 test=# create type patrec as (patid int, patname text); CREATE TYPE test=# create or replace function getpats(int) returns setof patrec as $$ select patid,patfname|| ' ' || patlname from pats where patstatus=$1 $$ language SQL; CREATE FUNCTION test=# select * from getpats(2); patid | patname -------+---------------- 123 | Merton Baffled 129 | Jim Puzzled (2 rows) hope this helps gnari ---------------------------(end of broadcast)--------------------------- TIP 9: In versions below 8.0, the planner will ignore your desire to choose an index scan if your joining column's datatypes do not match