Re: [GENERAL] Syntax error in Execute statement

Поиск
Список
Период
Сортировка
От Michael Fuhr
Тема Re: [GENERAL] Syntax error in Execute statement
Дата
Msg-id 20060306183042.GA14001@winnie.fuhr.org
обсуждение исходный текст
Ответ на Syntax error in Execute statement  (Emil Rachovsky <zsevgymko@yahoo.com>)
Список pgsql-sql
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

В списке pgsql-sql по дате отправления:

Предыдущее
От: Greg Stark
Дата:
Сообщение: Re: Help with "missing FROM clause" needed
Следующее
От: Tom Lane
Дата:
Сообщение: Re: [GENERAL] problem with overloading the "coalesce" function