Skip site navigation (1) Skip section navigation (2)

Peripheral Links

Header And Logo

PostgreSQL
| The world's most advanced open source database.

Site Navigation

Search for
  Advanced Search

Re: PL/pgSQL Zuweisungsoperator


  • 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: Tue, 06 Dec 2005 23:55:29 +0100
  • Message-id: <87u0dlj0ny(dot)fsf(at)gate450(dot)dyndns(dot)org>

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
-- 



Home | Main Index | Thread Index

Privacy Policy | PostgreSQL Archives hosted by Command Prompt, Inc. | Designed by tinysofa
Copyright © 1996 – 2008 PostgreSQL Global Development Group