Thread: Stored Proc Problem

Stored Proc Problem

From
Robert Landrum
Date:
I'm writing a stored procedure that will execute as a trigger.
Arguments being passed to the procedure are field names.

My goal is to convert those field names into the field values.  However,
I've not been successful.  I thought that the following should have worked.

EXECUTE ''field_val := NEW.''||tg_argv[1]||'';'';

Nor does

EXECUTE ''SELECT INTO field_val NEW.''||tg_argv[1]||'';'';

I've tried using open for execute too...  No luck.

Is this possible in pure SQL?

Rob

Re: Stored Proc Problem

From
Tom Lane
Date:
Robert Landrum <rlandrum@aol.net> writes:
> I'm writing a stored procedure that will execute as a trigger.
> Arguments being passed to the procedure are field names.

> My goal is to convert those field names into the field values.  However,
> I've not been successful.  I thought that the following should have worked.

> EXECUTE ''field_val := NEW.''||tg_argv[1]||'';'';

> Nor does

> EXECUTE ''SELECT INTO field_val NEW.''||tg_argv[1]||'';'';

> I've tried using open for execute too...  No luck.

> Is this possible in pure SQL?

Well, that's not "pure SQL", it's plpgsql ... but the answer is no.
plpgsql can't deal with selection of run-time-specified fields from
its variables.  You'd have better luck coding this in one of the other
PL languages.

            regards, tom lane