Thread: error on line 1 trying to execute a script using psql
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 />
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
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