Syntax error in Execute statement

Started by Emil Rachovskyabout 20 years ago2 messagesgeneral
Jump to latest
#1Emil Rachovsky
zsevgymko@yahoo.com

Hello,

I created a function "coalescec" which behaves the
same as coalesce, but uses an integer and a string.
Now I'm getting an error in the folowing statements :

query := 'select "UID" from S_Users_To_Connection
where ConnID = ' || coalescec(conn_id,'null');
execute query into nUID;

ERROR: syntax error at or near "$2" at character 20
QUERY: SELECT $1 into $2

I have put UID in quotes because it seems to be a
keyword.

Here is the table script:

create TEMP table S_Users_To_Connection(
UID integer NOT NULL
,ConnID integer NOT NULL
,LoginID integer NOT NULL
);

Any suggestions ?

__________________________________________________
Do You Yahoo!?
Tired of spam? Yahoo! Mail has the best spam protection around
http://mail.yahoo.com

#2Michael Fuhr
mike@fuhr.org
In reply to: Emil Rachovsky (#1)
Re: Syntax error in Execute statement

On Mon, Mar 06, 2006 at 07:21:58AM -0800, Emil Rachovsky wrote:

I created a function "coalescec" which behaves the
same as coalesce, but uses an integer and a string.

Is there a reason you can't use the standard COALESCE and cast the
integer value to text/varchar?

Now I'm getting an error in the folowing statements :

query := 'select "UID" from S_Users_To_Connection
where ConnID = ' || coalescec(conn_id,'null');
execute query into nUID;

ERROR: syntax error at or near "$2" at character 20
QUERY: SELECT $1 into $2

What version of PostgreSQL are you running? EXECUTE INTO is new
in 8.1; earlier versions would print an error like the above.

I have put UID in quotes because it seems to be a
keyword.

How did you determine that? UID isn't shown in the "SQL Key Words"
appendix of the documentation and I don't see it in the backend or
PL/pgSQL grammars. Using it unquoted works here:

test=> CREATE TABLE foo (uid integer);
CREATE TABLE
test=> INSERT INTO foo (uid) VALUES (1);
INSERT 0 1
test=> SELECT uid FROM foo;
uid
-----
1
(1 row)

I'd guess that you created the column with an uppercase quoted
identifier. See the documentation regarding case folding and
quoted identifiers:

http://www.postgresql.org/docs/8.1/interactive/sql-syntax.html#SQL-SYNTAX-IDENTIFIERS

--
Michael Fuhr