Hlavní navigace

Vlákno názorů k článku Jak nepoužívat PL/pgSQL (případně PL/SQL) – fatální chyby při vývoji od theo - Děkuji za skvělý článek. Jako příležitostný uživatel PL/pgSQL...

Článek je starý, nové názory již nelze přidávat.

  • 25. 5. 2018 14:57

    theo (neregistrovaný) 2a0a:1c01:0:----:----:----:----:----

    Děkuji za skvělý článek. Jako příležitostný uživatel PL/pgSQL funkcí bych ale ocenil příklad rady "Místo dočasných tabulek v Postgres používejte pole."

  • 25. 5. 2018 17:16

    Pavel Stěhule

    Přišlo mi to jasné, ale uvedu příklad.

    CREATE TEMP TABLE xx AS SELECT id FROM tab WHERE ...
    FOR r IN SELECT ... FROM t WHERE id IN (SELECT id FROM xx)
    
    --- lepe
    
    DECLARE xx int[];
    SELECT array_agg(id) INTO xx FROM tab WHERE ...
    FOR r IN SELECT ... FROM t WHERE id = ANY(xx)

    Důvodů, proč se používá dočasná tabulka může být vícero - někdy se používá pro předávání např. seznamu id mezi procedurami. V takovém případě se právě perfektně uplatní pole.

    CREATE OR REPLACE FUNCTION zrus_xx(ids int[])
    RETURNS void AS $$
    BEGIN
      DELETE FROM tab WHERE id = ANY(ids)
      ..