Quantcast
Channel: dBforums – Everything on Databases, Design, Developers and Administrators
Viewing all articles
Browse latest Browse all 13329

Unable to retrieve a sequence into a variable within a function

$
0
0
Hi,

I am new to POSTGRES and am having trouble in retrieving a sequence next value into a declared variable within a function. My function complies OK - but when I call it I get a column does not exist error.

The sequence is defined as:
create sequence act_individual_id_seq
minvalue 1
maxvalue 99999999
start with 300
increment by 1 ;

When I use the following statement directly it returns a correct value:
select nextval(act_individual_id_seq) ;

My function is:
CREATE OR REPLACE FUNCTION staff_add(int, varchar, varchar, varchar, varchar, varchar, int, int, varchar, varchar, varchar, varchar, varchar, varchar) RETURNS void AS
'DECLARE
v_nextSeq int ;
BEGIN
select nextval(act_individual_id_seq) AS v_nextSeq ;
-- v_nextSeq=values(NEXTVAL for act_individual_id_seq) ;

Insert Into act_individual( id,typ, sal_id, first_name,
middle_name, surname,
known_name, home_tel,
office_tel, mobile, email,
logon_name, password,
active, datim)
values (v_nextSeq, 2, $1, $2, $3, $4, $5, $9,
$10, $11, $12, $13, $14, true,
current_date) ;

Insert Into act_staff( id, staff_no, unit_id,
dept_id, active)
values ( v_nextSeq, $6, $7, $8, true) ;
END;'
LANGUAGE plpgsql;

I am trying to put the nextval into the variable v_nextVal but it gives the 'act_individual_id_seq' does not exist error.

If i try to replace the nextval statement with:
select nextval('act_individual_id_seq') AS v_nextSeq ;
It will not compile. The commented out statement will not compile either.

I would appreciate it if anyone could point me in the right direction.
Thanks

Viewing all articles
Browse latest Browse all 13329

Trending Articles