Thread: sequences in functions
I am having problems referencing sequeces in a function, I think because of the '' characters. The function I am creating is a follows: - CREATE FUNCTION InsertClient ( varchar, varchar, varchar, varchar, varchar, varchar ) RETURNS int4 AS ' DECLAREid INT; BEGINSELECT nextval('client_seq') INTO id; INSERT INTO client (client_id, last_name, address1, country)VALUES (id, $1, $2, $3); INSERT INTO client_card (client_card_id, type, number, expiry_date, client_id)VALUES (nextval('client_card_seq'), $4, $5, $6, id); RETURN id; END; ' LANGUAGE 'plpgsql'; And the error message is ERROR: parser: parse error at or near "client_seq" EOF Is this because of the ' ' ??? Also can you pass in a array or hash to the function? Cheers Graham
Hello Graham, Friday, August 18, 2000, 6:24:15 PM, you wrote: GV> I am having problems referencing sequeces in a function, I think because of GV> the '' characters. The function I am creating is a follows: - GV> CREATE FUNCTION InsertClient ( varchar, varchar, varchar, varchar, varchar, GV> varchar ) RETURNS int4 AS ' GV> DECLARE GV> id INT; GV> BEGIN GV> SELECT nextval('client_seq') INTO id; GV> INSERT INTO client (client_id, last_name, address1, country) GV> VALUES (id, $1, $2, $3); GV> INSERT INTO client_card (client_card_id, type, number, expiry_date, GV> client_id) GV> VALUES (nextval('client_card_seq'), $4, $5, $6, id); GV> RETURN id; GV> END; GV> ' LANGUAGE 'plpgsql'; GV> And the error message is GV> ERROR: parser: parse error at or near "client_seq" GV> EOF GV> Is this because of the ' ' ??? You must to use two quotes: SELECT nextval(''client_seq'') INTO id; -- Best regards,Yury mailto:yura@vpcit.ru
I have noticed that you can only pass 16 parameters to a function, I was therefore wondering how you can do atomic inserts (such as the function below but with more params) using pl/pgsql if you can't pass complex data types. Is this something that transactions are not used for or is it best done as two seperate calls in my perl scripts? -----Original Message----- From: pgsql-sql-owner@hub.org [mailto:pgsql-sql-owner@hub.org]On Behalf Of Yury Don Sent: 18 August 2000 15:07 To: pgsql-sql@postgresql.org Subject: Re: [SQL] sequences in functions Hello Graham, Friday, August 18, 2000, 6:24:15 PM, you wrote: GV> I am having problems referencing sequeces in a function, I think because of GV> the '' characters. The function I am creating is a follows: - GV> CREATE FUNCTION InsertClient ( varchar, varchar, varchar, varchar, varchar, GV> varchar ) RETURNS int4 AS ' GV> DECLARE GV> id INT; GV> BEGIN GV> SELECT nextval('client_seq') INTO id; GV> INSERT INTO client (client_id, last_name, address1, country) GV> VALUES (id, $1, $2, $3); GV> INSERT INTO client_card (client_card_id, type, number, expiry_date, GV> client_id) GV> VALUES (nextval('client_card_seq'), $4, $5, $6, id); GV> RETURN id; GV> END; GV> ' LANGUAGE 'plpgsql'; GV> And the error message is GV> ERROR: parser: parse error at or near "client_seq" GV> EOF GV> Is this because of the ' ' ??? You must to use two quotes: SELECT nextval(''client_seq'') INTO id; -- Best regards,Yury mailto:yura@vpcit.ru