Thread: "function has no parameter $1" - help.

"function has no parameter $1" - help.

From
Michael Weaver
Date:

I'm trying to create a trigger to enforce a constraint onto two possible foreign tables
my function is defined as:

<-- snip -->
CREATE OR REPLACE FUNCTION sp_check_tranitem_productid(tbl_tranitem.fld_tranitem_id%TYPE,
                                tbl_tranitem.fld_tranitem_type%TYPE) RETURNS OPAQUE AS '
DECLARE
-------[Parameters]-------
        pl_product_id   ALIAS FOR $1;
        pl_product_type ALIAS FOR $2;
<-- snip -->

but when I call the function I get the error:

        function has no parameter $1

What is going wrong?

(I am using PostgreSQL 7.3.1)
,

Mike Weaver
Software Developer

5, 42 Ladner Street
O'Connor, WA, 6163
All correspondence:
PO Box Y3502
East St Georges Terrace
Perth WA 6832

P: (+618) 9331 2700
F: (+618) 9331 3733
M: 0403 385 181
W: http://www.corpusglobe.com/
E: mweaver@corpusglobe.com

This email is intended only for the use of the individual or entity named above and may contain information that is confidential. If you are not the intended recipient, you are hereby notified that any dissemination, distribution or copying of this email is strictly prohibited. When addressed to our clients, any opinions or advice contained in this email are subject to the terms and conditions expressed in the governing Corpus Globe client engagement letter. If you have received this Email in error, please notify us immediately by return email or telephone +61 8 9331 2700 and destroy the original message. Thank You.

Re: "function has no parameter $1" - help.

From
Christoph Haller
Date:
>
> I'm trying to create a trigger to enforce a constraint onto two
possible
> foreign tables
> my function is defined as:
>
> <-- snip -->
> CREATE OR REPLACE FUNCTION
> sp_check_tranitem_productid(tbl_tranitem.fld_tranitem_id%TYPE,
>                               tbl_tranitem.fld_tranitem_type%TYPE)
RETURNS
> OPAQUE AS '
> DECLARE
> -------[Parameters]-------
>       pl_product_id   ALIAS FOR $1;
>       pl_product_type ALIAS FOR $2;
> <-- snip -->
>
> but when I call the function I get the error:
>
>       function has no parameter $1
>
> What is going wrong?
>
> (I am using PostgreSQL 7.3.1)
>
The documentation says about trigger procedures:

PL/pgSQL can be used to define trigger procedures. A trigger procedure
is created with the CREATE FUNCTION command as a
function with no arguments and a return type of OPAQUE. Note that the
function must be declared with no arguments even if it
expects to receive arguments specified in CREATE TRIGGER --- trigger
arguments are passed via TG_ARGV, as described
below.

Refer to that chapter for an example.

Regards, Christoph




Re: "function has no parameter $1" - help.

From
"Daniel Schuchardt"
Date:
In > 7.3 you can also

CREATE OR REPLACE FUNCTION xxx() RETURNS TRIGGER AS'
BEGIN
END'LANGUAGE plpgsql;