Обсуждение: Unable to use '-' in column names in PLPGSQL

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

Unable to use '-' in column names in PLPGSQL

От
"Aasmund Midttun Godal"
Дата:
CREATE FUNCTION is_parent(INTEGER, INTEGER) RETURNS BOOLEAN AS '       DECLARE parent ALIAS FOR $1; tull ALIAS for $2;
kidINTEGER;      BEGIN       kid := tull;       LOOP SELECT INTO kid "dir-id" FROM dir WHERE id = kid; IF kid = parent
THEN  RETURN TRUE; END IF; IF kid IS NULL THEN   RETURN FALSE;    END IF;       END LOOP;      END;     
 
' LANGUAGE 'plpgsql';

Will cause the following compilation error:

NOTICE:  plpgsql: ERROR during compile of is_parent near line 8
ERROR:  unterminated "

If I change the column name to dir_id it works fine.

It does not matter whether or not I use quotes.

Aasmund Midttun Godal

aasmund@godal.com - http://www.godal.com/
+47 40 45 20 46


Re: Unable to use '-' in column names in PLPGSQL

От
Martín Marqués
Дата:
On Jue 15 Nov 2001 10:38, you wrote:
> CREATE FUNCTION is_parent(INTEGER, INTEGER) RETURNS BOOLEAN AS '
>         DECLARE
>      parent ALIAS FOR $1;
>      tull ALIAS for $2;
>      kid INTEGER;
>        BEGIN
>         kid := tull;
>         LOOP
>      SELECT INTO kid "dir-id" FROM dir WHERE id = kid;
>      IF kid = parent THEN
>       RETURN TRUE;
>      END IF;
>      IF kid IS NULL THEN
>       RETURN FALSE;
>        END IF;
>         END LOOP;
>        END;
> ' LANGUAGE 'plpgsql';

You shoun't use '-' in column names. Use '_' instead.

Saludos... :-)

P.D.: Doesn't it give you an error when you try to create the table with does 
column names?


-- 
Porqué usar una base de datos relacional cualquiera,
si podés usar PostgreSQL?
-----------------------------------------------------------------
Martín Marqués                  |        mmarques@unl.edu.ar
Programador, Administrador, DBA |       Centro de Telematica                      Universidad Nacional
        del Litoral
 
-----------------------------------------------------------------


Re: Unable to use '-' in column names in PLPGSQL

От
Tom Lane
Дата:
"Aasmund Midttun Godal" <postgresql@envisity.com> writes:
>      SELECT INTO kid "dir-id" FROM dir WHERE id = kid;

plpgsql has a fairly brain-dead notion of what a double-quoted
identifier can be: in fact, it really has *no* notion of it, but expects
the same set of identifier characters that would be allowed in unquoted
identifiers.

I've had a TODO note to do something about that ... but not yet gotten
to it.
        regards, tom lane