Обсуждение: plpgsql, double quoted column names containing spaces/hyphens

Поиск
Список
Период
Сортировка

plpgsql, double quoted column names containing spaces/hyphens

От
"Knut P. Lehre"
Дата:
Using pgsql 7.2.1 (PeerDirect beta4) on WinXP Prof SP1. Client: MS 
VStudio2003 C++ -> ADO -> ODBC 7.03.01.00.

In plpgsql, I can access columns with a name containing capital letters by 
enclosing the name in double quotes: tbl."ColName"
However, if the quoted name contains spaces or hyphens I get an error 
message. It is surprising that this does not work in plpgsql when it does 
with sql.

Thus, the following line produces an error (unterminated ") in plpgsql:
IF OLD."-person-initials" ... THEN

However, I discovered that rewriting using EXECUTE does work:
DECLARE curs1 refcursor; personinitials int4;
...
OPEN curs1 FOR EXECUTE ''SELECT "-person-initials" AS pers FROM 
"''||TG_RELNAME||''" WHERE id=''||OLD.id;
FETCH curs1 INTO personinitials;
CLOSE curs1;
IF personinitials ... THEN


Could I have solved this problem in an easier way, by using some kind of 
escape codes in the example producing the error (IF OLD."-person-initials" 
... THEN)?

Thanks, KP



Re: plpgsql, double quoted column names containing spaces/hyphens

От
Tom Lane
Дата:
"Knut P. Lehre" <k.p.lehre@tiscali.no> writes:
> Using pgsql 7.2.1 (PeerDirect beta4) on WinXP Prof SP1. Client: MS 

> In plpgsql, I can access columns with a name containing capital letters by 
> enclosing the name in double quotes: tbl."ColName"
> However, if the quoted name contains spaces or hyphens I get an error 
> message.

This is fixed in 7.3.
        regards, tom lane