Thread: error on line 1 trying to execute a script using psql

error on line 1 trying to execute a script using psql

From
Steven Dahlin
Date:
I am attempting to generate a temporary function to execute some dml with the following script:<br /><br />create or
replacefunction setuplicense() returns integer as $$<br />declare<br />  hwcustid  integer := 0;<br />  retval   
integer:= 0;<br /> begin<br />  insert into license.customer<br />  ( customer_id ) values ( hwcustid );<br /> 
commit;<br/>  return retval;<br />end;<br />$$<br />LANGUAGE plpgsql;<br /><br />select setuplicense();<br /><br />When
runningthis with psql I get the following:<br /><br />Error: syntax error at or near "create"<br /><br />Does anyone
havea suggestion as to what is causing this?<br /><br />Thanks<br /> 

Re: error on line 1 trying to execute a script using psql

From
Tim Landscheidt
Date:
Steven Dahlin <pgdb.sldahlin@gmail.com> wrote:

> I am attempting to generate a temporary function to execute some dml with
> the following script:

> create or replace function setuplicense() returns integer as $$
> declare
>   hwcustid  integer := 0;
>   retval    integer := 0;
> begin
>   insert into license.customer
>   ( customer_id ) values ( hwcustid );
>   commit;
>   return retval;
> end;
> $$
> LANGUAGE plpgsql;

> select setuplicense();

> When running this with psql I get the following:

> Error: syntax error at or near "create"

> Does anyone have a suggestion as to what is causing this?

Your editor prepends the file with a byte-order mark ("BOM")
that PostgreSQL chokes on (bug #5398). This will be fixed in
9.0 (cf.
<URI:http://developer.postgresql.org/pgdocs/postgres/release-9-0.html#AEN99331>);
until then you either have to configure your editor not to
save the BOM or chop off the first three bytes yourself
(with tail, sed, Perl & Co.).

Tim



Re: error on line 1 trying to execute a script using psql

From
"A. Kretschmer"
Date:
In response to Tim Landscheidt :
> Steven Dahlin <pgdb.sldahlin@gmail.com> wrote:
> 
> > I am attempting to generate a temporary function to execute some dml with
> > the following script:
> 
> > create or replace function setuplicense() returns integer as $$
> > declare
> >   hwcustid  integer := 0;
> >   retval    integer := 0;
> > begin
> >   insert into license.customer
> >   ( customer_id ) values ( hwcustid );
> >   commit;
> >   return retval;
> > end;
> > $$
> > LANGUAGE plpgsql;
> 
> > select setuplicense();
> 
> > When running this with psql I get the following:
> 
> > Error: syntax error at or near "create"
> 
> > Does anyone have a suggestion as to what is causing this?
> 
> Your editor prepends the file with a byte-order mark ("BOM")
> that PostgreSQL chokes on (bug #5398). This will be fixed in
> 9.0 (cf.
> <URI:http://developer.postgresql.org/pgdocs/postgres/release-9-0.html#AEN99331>);
> until then you either have to configure your editor not to
> save the BOM or chop off the first three bytes yourself
> (with tail, sed, Perl & Co.).

Additional error: you can't do a COMMIT inside a function.


Regards, Andreas
-- 
Andreas Kretschmer
Kontakt:  Heynitz: 035242/47150,   D1: 0160/7141639 (mehr: -> Header)
GnuPG: 0x31720C99, 1006 CCB4 A326 1D42 6431  2EB0 389D 1DC2 3172 0C99