Re: how postgresql passes the parameter to the function. syntax error near or at "$1".

From: Pavel Stehule <pavel(dot)stehule(at)gmail(dot)com>
To: leaf_yxj <leaf_yxj(at)163(dot)com>
Cc: pgsql-general(at)postgresql(dot)org
Subject: Re: how postgresql passes the parameter to the function. syntax error near or at "$1".
Date: 2012-03-28 16:25:27
Message-ID: CAFj8pRD1Y4tpAzXeQR511+q8qJ9a5n4CpF=64HrudQtWRraZiw@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Hello

parameter - $n cannot be used on table name or column name position.
Some statements - DROP, VACUUM, ANALYZE doesn't support parameters
ever.

You have to use dynamic SQL in these cases.

CREATE OR REPLACE FUNCTION foo(tablename text, value text)
RETURNS void AS $$
BEGIN
EXECUTE 'insert into ' || quote_ident(tablename) || ' VALUES($1)' USING value;
END;
$$ LANGUAGE plpgsql

Regards

Pavel Stehule

2012/3/28 leaf_yxj <leaf_yxj(at)163(dot)com>:
> I want to create a function which use to truncate the table specified by the
> caller. I very confused how postgresql pass this parameter into the function
> :
>
> as a superuser to execute :
> 1)
> create or replace function d() returns void as $$
> analyze;
> $$ language sql;
>
>
> ----- this works when i issue select d()
>
> 2) this doesn't work
>
> create or replace function v(text) returns void as $$
> analyze $1;
> $$ language sql;
>
>  why???? and how to correct it?
>
>
> I tried another function for insert
>
> 1) this works.
>
> create or replace function insert_f(integer) returns void as $$
> insert into t1 values($1);
> $$ language sql;
>
> ----this works when i issue select insert_f(20);
>
> 2) this doesn't work.
>
> create or replace function insert_f(text,integer) returns void as $$
> insert into $1 values($2);
> $$ language sql;
>
> ---- it failed to create the function and give me error : syntax error at or
> near "$1".
>
> Please help.
>
> Thanks.
>
> Regards.
>
> Grace
>
>
>
> --
> View this message in context: http://postgresql.1045698.n5.nabble.com/how-postgresql-passes-the-parameter-to-the-function-syntax-error-near-or-at-1-tp5601053p5601053.html
> Sent from the PostgreSQL - general mailing list archive at Nabble.com.
>
> --
> Sent via pgsql-general mailing list (pgsql-general(at)postgresql(dot)org)
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgsql-general

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Merlin Moncure 2012-03-28 16:36:36 Re: how to pass the function caller's parameter to inside the function. syntax error at or near "$1"
Previous Message leaf_yxj 2012-03-28 16:20:43 how postgresql passes the parameter to the function. syntax error near or at "$1".