Přiřazovací příkaz

Z PostgreSQL
Přejít na: navigace, hledání

Přiřazovací příkaz nastaví obsah proměnné na hodnotu rovnu zadanému výrazu nebo subdotazu. PL/pgPSM podporuje tři formy přiřazovacího příkazu:

  • jednoduchý přiřazovací příkaz,
  • simultánní složený přiřazovací příkaz,
  • vícenásobný složený přiřazovací příkaz.

V simultánním složeném příkazu se jednorázově vyhodnotí pravá strana příkazu, která se přiřadí seznamu proměnných v levé části příkazu. Vícenásobný složený příkaz postupně provádí zleva seznam jednoduchých složených příkazů. Jelikož se simultánní přiřazovací příkaz vyhodnocuje efektivněji a jelikož odpovídá aktuálnímu standardu SQL/PSM preferujte jej před vícenásobným přiřazovacím příkazem. Důvodem podpory vícenásobného přiřazovacího příkazu je snaha o vyšší přenositelnost s DB2 a MySQL, které tuto formu podporují (a zatím nepodporují simultánní složený příkaz).

CREATE OR REPLACE FUNCTION foo()
RETURNS void AS 
$$
  BEGIN
    DECLARE a, b, c int;
    -- jednoduchy prirazovaci prikaz
    SET a = 0; SET b = a + 1; SET c = b + 1;
    -- vicenasobny prirazovaci prikaz
    SET a = 0, b = a + 1, c = b + 1;
    -- simultalni prirazovaci prikaz
    SET (a,b,c) = (0, 0 + 1, 0 + 2);
    -- prirazeni vysledku poddotazu
    SET a = (SELECT f.a FROM Foo f);
    SET (a, b, c) = (SELECT f.a, f.b, f.c FROM Foo f);
  END;
$$ LANGUAGE plpgpsm;

Syntaxe

SET '(' promenna [, promenna [, ...]] ')' = '(' vyraz ')' ';'
SET promenna '=' vyraz [, promenna '=' vyraz [, ...]] ';'