From: | "Richard Sydney-Smith" <richard(at)ibisaustralia(dot)com> |
---|---|
To: | "Stephan Szabo" <sszabo(at)megazone(dot)bigpanda(dot)com> |
Cc: | <pgsql-sql(at)postgresql(dot)org> |
Subject: | Re: How do I replace select ... into commands? |
Date: | 2003-09-12 02:59:08 |
Message-ID: | 001d01c378d9$d8a8bfc0$df6c32d2@athlon2000 |
Views: | Whole Thread | Raw Message | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-sql |
Stephen replied :
> Something like the above should work, what's the exact function and error
> message and what version are you using?
>
>
thanks Stephen.
Exact function definition follows:
PG Version is 7.3.1 on Windows 2000
This procedure allocates unique record number to a number of tables. In the
application it is important that I know the records ID number before it is
inserted into the database. Also use to assign batch and session numbers
etc.
CREATE FUNCTION public.make_rsn(bpchar, bpchar, int4) RETURNS int4 AS '
declare
tbl alias for $1;
seq_fld alias for $2;
incr alias for $3;
rsn integer := 0;
lastrsn integer := 0;
mx integer := 0;
begin
-- look for existing last RSN
select "max"(seq_val) as m into lastrsn from fseqkeys where seq_key = tbl;
if lastrsn=0 or lastrsn is null then
-- no pre existing RSN so we have to search the table
if tbl=''BATCH'' or position(''-'' in tbl)>0 then
mx := 100;
else
execute ''select max('' || seq_fld || '') into mx from '' || tbl;
end if;
rsn := mx+1;
-- dont allow rsn < 100
if rsn<100 or rsn is null then
rsn := 100;
end if;
lastrsn := rsn;
-- record the new rsn
insert into fseqkeys (seq_key,seq_val) values (tbl,rsn);
end if;
-- reserve the required number of rows
rsn := lastrsn+incr;
--and update the fseqkeys table with the RSN number/s we have just used
update fseqkeys set seq_val = rsn where seq_key=tbl;
-- now return the RSN number to the user
return rsn;
end;
' LANGUAGE 'plpgsql' VOLATILE;
----- Original Message -----
From: "Stephan Szabo" <sszabo(at)megazone(dot)bigpanda(dot)com>
To: "Richard Sydney-Smith" <richard(at)ibisaustralia(dot)com>
Cc: <pgsql-sql(at)postgresql(dot)org>
Sent: Friday, September 12, 2003 10:46 AM
Subject: Re: [SQL] How do I replace select ... into commands?
> On Fri, 12 Sep 2003, Richard Sydney-Smith wrote:
>
> > I have a number of sybase procedures in which I use something like
> >
> > declare
> > mx : integer;
> > begin
> > select max(field) from table into mx;
> > return mx;
> > end;
> >
> > Postgresql is telling me that select...into has not been implemented
> > yet. what is the best way to perform this action with the commands
> > offered in plpgsql?
>
> Something like the above should work, what's the exact function and error
> message and what version are you using?
>
>
>
From | Date | Subject | |
---|---|---|---|
Next Message | Tom Lane | 2003-09-12 03:20:07 | Re: How do I replace select ... into commands? |
Previous Message | Stephan Szabo | 2003-09-12 02:46:28 | Re: How do I replace select ... into commands? |