From: | Andreas Seltenreich <andreas+pg(at)gate450(dot)dyndns(dot)org> |
---|---|
To: | Tobias Bußmann <e(dot)t(dot)bussmann(at)ing(dot)twinwave(dot)net> |
Cc: | <pgsql-de-allgemein(at)postgresql(dot)org> |
Subject: | Re: PL/pgSQL Zuweisungsoperator |
Date: | 2005-12-06 22:55:29 |
Message-ID: | 87u0dlj0ny.fsf@gate450.dyndns.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-de-allgemein |
Tobias Bußmann writes:
> ich hab mal ne ganz simple Frage: Laut Doku (38.6.1) ist in PL/pgSQL der
> Zuweisungsoperator (zum Zuweisen eines Wertes einer Variablen) :=
> Nun habe ich aber festgestellt, dass ein simples = anscheinend
> gleichbedeutend ist. Ist dies nun eine (unsupported) Alternative oder hat
> der = Operator ansich eine andere Bedeutung
Ein Blick in die plpgsql-Lexer zeigt, daß beide als das selbe Token
enden:
src/pl/plpgsql/src/scan.l
--8<---------------cut here---------------start------------->8---
:= { return K_ASSIGN; }
= { return K_ASSIGN; }
--8<---------------cut here---------------end--------------->8---
> (die hat er zweifelsfrei als Vergleichsoperator - obwohl er
> anscheinend auch zuweisen kann. btw: es gibt keinen == Operator, den
> müsste man jedoch wie andere Vergleichsoperatoren selbst erstellen
> können)
Man muß hier beachten, welcher Teil des Codes von plpgsql, und welcher
von Postgres geparst wird. So sieht die Produktion für das
plpgsql-Assignment-Statement aus:
src/pl/plpgsql/src/gram.y
--8<---------------cut here---------------start------------->8---
stmt_assign : assign_var lno K_ASSIGN expr_until_semi
--8<---------------cut here---------------end--------------->8---
Während K_ASSIGN der plpgsql-Operator mit fester Zuweisungs-Semantik
ist, landen nachfolgende Operatoren in expr_until_semi bei der
Ausführung der Funktion beim SQL-Parser, was sie der Semantik der
SQL-Operatoren unterwirft.
Gruß
Andreas
--
From | Date | Subject | |
---|---|---|---|
Next Message | Tobias Bußmann | 2005-12-06 23:02:25 | Re: PL/pgSQL Zuweisungsoperator |
Previous Message | Andreas Seltenreich | 2005-12-06 21:52:21 | Re: Werte Prüfen und anderes Feld mit Resultat |