Re: PL/pgSQL Zuweisungsoperator

From: Tobias Bußmann <e(dot)t(dot)bussmann(at)ing(dot)twinwave(dot)net>
To: <pgsql-de-allgemein(at)postgresql(dot)org>
Subject: Re: PL/pgSQL Zuweisungsoperator
Date: 2005-12-06 23:02:25
Message-ID: 025501c5fab9$22524d40$2383fea9@LaptopTB
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-de-allgemein

Hallo Andreas,
vielen Dank für deine präzisen Ausführungen. Da habe ich wieder etwas
gelernt!

Gruß
Tobias

Andreas Seltenreich <andreas+pg(at)gate450(dot)dyndns(dot)org> wrote:
> 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

In response to

Browse pgsql-de-allgemein by date

  From Date Subject
Next Message A. Kretschmer 2005-12-07 06:28:26 Re: Winbashing
Previous Message Andreas Seltenreich 2005-12-06 22:55:29 Re: PL/pgSQL Zuweisungsoperator