Received: from nxcdmail.nxcd.com (nxcdmail.nxcd.com [65.213.43.194]) by postgresql.org (Postfix) with ESMTP id 7E8BD4758D8 for ; Wed, 24 Jul 2002 10:04:12 -0400 (EDT) Received: by NXCDMAIL with Internet Mail Service (5.5.2653.19) id <3S7T7JPP>; Wed, 24 Jul 2002 07:12:11 -0700 Message-ID: <1CAD483B723BD611B0C10090274FF0685547C5@NXCDMAIL> From: Peter Atkins To: "'pgsql-sql@postgresql.org'" Subject: Return Primary Key from Procedure Date: Wed, 24 Jul 2002 07:12:06 -0700 MIME-Version: 1.0 X-Mailer: Internet Mail Service (5.5.2653.19) Content-Type: text/plain X-Archive-Number: 200207/382 X-Sequence-Number: 8760 All, I have two tables t_proj, t_task see below: CREATE TABLE t_proj ( proj_id INT NOT NULL AUTO_INCREMENT, PRIMARY KEY (proj_id), task_id integer(12), user_id integer(6), title varchar(35), description varchar(80) ); CREATE TABLE t_task ( task_id INT NOT NULL AUTO_INCREMENT, PRIMARY KEY (task_id), title varchar(35), description varchar(80) ); When I insert into t_task I need to return the task_id (PK) for that insert to be used for the insert into the t_proj table. I tried using RESULT_OID but I have no idea how to obtain the true PK using this opague id. Below is the procedure I tried to use. CREATE OR REPLACE FUNCTION insertTask (varchar, varchar) RETURNS INTEGER AS ' DECLARE -- local variables oid1 INTEGER; retval INTEGER; BEGIN INSERT INTO t_task (title, description) VALUES ($1, $2); -- Get the oid of the row just inserted. GET DIAGNOSTICS oid1 = RESULT_OID; retval := oid1; -- Everything has passed, return id as pk RETURN retval; END; ' LANGUAGE 'plpgsql'; Any help would be great! Thanks Again, -p