PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Wie deklariere ich lokale Variablen in Postgresql?

Postgresql unterstützt historisch keinen prozeduralen Code auf Befehlsebene – nur innerhalb von Funktionen. In Postgresql 9 wurde jedoch Unterstützung hinzugefügt, um einen Inline-Codeblock auszuführen, der so etwas effektiv unterstützt, obwohl die Syntax vielleicht etwas seltsam ist und es viele Einschränkungen im Vergleich zu dem gibt, was Sie mit SQL Server tun können. Insbesondere kann der Inline-Codeblock keine Ergebnismenge zurückgeben und kann daher nicht für das verwendet werden, was Sie oben skizzieren.

Wenn Sie prozeduralen Code schreiben und ein Ergebnis zurückgeben möchten, müssen Sie ihn im Allgemeinen in eine Funktion einfügen. Zum Beispiel:

CREATE OR REPLACE FUNCTION somefuncname() RETURNS int LANGUAGE plpgsql AS $$
DECLARE
  one int;
  two int;
BEGIN
  one := 1;
  two := 2;
  RETURN one + two;
END
$$;
SELECT somefuncname();

Das PostgreSQL-Wire-Protokoll erlaubt meines Wissens keine Dinge wie einen Befehl, der mehrere Ergebnismengen zurückgibt. Sie können also nicht einfach T-SQL-Stapel oder gespeicherte Prozeduren PostgreSQL-Funktionen zuordnen.