sql >> Databáze >  >> RDS >> PostgreSQL

Jak správně používat `RETURN NEXT` v PL/pgSQL?

Uvedený příklad může být zcela nahrazen RETURN QUERY :

BEGIN
    RETURN QUERY SELECT y_.y, 'hi' FROM generate_series(1,10,1) AS y_(y)
END;

což bude hodně rychleji.

Obecně byste se měli vyhnout iteracím, kdykoli je to možné, a místo toho upřednostňovat operace orientované na množinu.

Kde return next přes smyčku je nevyhnutelné (což je velmi vzácné a většinou se omezuje na případy, kdy potřebujete zpracování výjimek), musíte nastavit OUT hodnoty parametrů nebo parametry tabulky a poté return next bez argumentů.

V tomto případě je vaším problémem řádek SELECT yr.y, 'hi'; která nic nedělá. Předpokládáte, že implicitní cíl SELECT jsou výstupní parametry, ale není tomu tak. Parametry out byste museli použít jako proměnné smyčky jako @peterm, použít přiřazení nebo použít SELECT INTO :

FOR yr IN SELECT * FROM generate_series(1,10,1) AS y_(y) 
LOOP
    RAISE NOTICE 'Computing %', yr.y;
    y := yr.y;
    result := 'hi';
    RETURN NEXT;
END LOOP;
RETURN;


  1. mysqli or die, musí to zemřít?

  2. Oracle SQL - Jak mohu zavolat zřetězenou funkci ODCI pomocí JSP

  3. Jak vytvořit databázový projekt Oracle pomocí Visual Studio 2010?

  4. Při přijímání výsledků ze serveru došlo k chybě na úrovni přenosu