Обсуждение: Unable to use '-' in column names in PLPGSQL
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
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
-----------------------------------------------------------------
"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