Thread: Syntax Error in COPY when “create function”

Syntax Error in COPY when “create function”

From
"hongliu zou"
Date:

 

Am I forgetting some limitation? 

 

I get " ERROR: syntax error at or near "$1"

SQL state: 42601 "with this

 

CREATE FUNCTION Import1() RETURNS text AS $$

DECLARE

            path Char(100);

BEGIN

            path = 'C:/zhl/hjs/anc_area.att';

            COPY anc_areaAtt FROM path CVS;

 

            RETURN path;

END;

$$ LANGUAGE plpgsql;

 

SELECT  Import1() ;

  

 

But COPY can work well when I just put the string in the command:
 

 

CREATE FUNCTION Import2() RETURNS text AS $$

DECLARE

            path Char(100);

BEGIN

            COPY anc_areaAtt FROM 'C:/zhl/hjs/anc_area.att' CSV;

            return path;

END;

$$ LANGUAGE plpgsql;

 

SELECT  Import2() ;

 

   

Does this mean the "filename" in COPY command can not be a variable?

 

By the way, my OS is windowXP.

 

Thanks and Regards,
Hongliu

Re: Syntax Error in COPY when “create function”

From
Osvaldo Rosario Kussama
Date:
hongliu zou escreveu:

> Am I forgetting some limitation?
>
> I get " ERROR: syntax error at or near "$1"
>
> SQL state: 42601 "with this
>
> CREATE FUNCTION Import1() RETURNS text AS $$
> DECLARE
>             path Char(100);
> BEGIN
>             path = 'C:/zhl/hjs/anc_area.att';
>             COPY anc_areaAtt FROM path CVS;
>

Try:
    EXECUTE 'COPY anc_areaAtt FROM ' || path || ' CVS;';

>
>             RETURN path;
> END;
> $$ LANGUAGE plpgsql;
>
> SELECT  Import1() ;
>
>
> But COPY can work well when I just put the string in the command:
>
> CREATE FUNCTION Import2() RETURNS text AS $$
> DECLARE
>             path Char(100);
> BEGIN
>             COPY anc_areaAtt FROM 'C:/zhl/hjs/anc_area.att' CSV;
>             return path;
> END;
> $$ LANGUAGE plpgsql;
>
> SELECT  Import2() ;
>
>
> |Does this mean the "filename" in COPY command can not be a variable?|
>


Look Executing Dynamic Commands at:
http://www.postgresql.org/docs/8.2/interactive/plpgsql-statements.html#PLPGSQL-STATEMENTS-EXECUTING-DYN

[]s
Osvaldo




_______________________________________________________
Yahoo! Mail - Sempre a melhor opção para você!
Experimente já e veja as novidades.
http://br.yahoo.com/mailbeta/tudonovo/


Re: Syntax Error in COPY when “create function”

From
Tom Lane
Date:
Osvaldo Rosario Kussama <osvaldo_kussama@yahoo.com.br> writes:
>> |Does this mean the "filename" in COPY command can not be a variable?|

Got it in one.

You can use EXECUTE to put together commands that require a variable
in places where PG doesn't allow one.

            regards, tom lane