From: | "Gurjeet Singh" <singh(dot)gurjeet(at)gmail(dot)com> |
---|---|
To: | "PGSQL Hackers" <pgsql-hackers(at)postgresql(dot)org> |
Subject: | RECORD.* doesn't work in Pl/PGSQL |
Date: | 2008-04-22 20:10:39 |
Message-ID: | 65937bea0804221310s13810497rde82a85cc4c2f288@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
RECORD.* doesn't work in plpgsql, but NEW.* and OLD.* do in trigger
functions created in plpgsql.
The example function process_emp_audit() on page
http://www.postgresql.org/docs/8.3/interactive/plpgsql-trigger.html , shows
that we can use OLD.* and NEW.* as:
INSERT INTO emp_audit SELECT 'D', now(), user, OLD.*;
but if I try to do the same thing in my own plpgsql function, it throws
a runtime ERROR:
create table t1( a int, b char );
create table t2( a int, b char );
create or replace function log_rotate() returns void as $$
declare
rec record;
begin
for rec in delete from t2 returning * loop
insert into t1 select 1, rec.*; -- throws ERROR: record type has
not been registered
end loop;
end;
$$ language 'plpgsql';
select log_rotate();
Is this intentional, or is this a bug?
Best regards,
--
gurjeet[(dot)singh](at)EnterpriseDB(dot)com
singh(dot)gurjeet(at){ gmail | hotmail | indiatimes | yahoo }.com
EnterpriseDB http://www.enterprisedb.com
Mail sent from my BlackLaptop device
From | Date | Subject | |
---|---|---|---|
Next Message | Martijn van Oosterhout | 2008-04-22 20:20:57 | Re: MERGE Specification |
Previous Message | Decibel! | 2008-04-22 19:19:24 | Re: MERGE Specification |