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

Abfrage, die die genaue Anzahl von Zeilen zurückgibt

Betrachten Sie dies weitgehend vereinfacht Version Ihrer plpgsql-Funktion . Sollte in PostgreSQL 8.3 funktionieren :

CREATE OR REPLACE FUNCTION x.fnk_abonemento_nariai(_prm_item integer)
  RETURNS SETOF subject_items AS
$BODY$
DECLARE
    _kiek    integer :=  num_records    -- get number at declaration time
                         FROM subjekto_abonementai WHERE num_id = _prm_item;
    _counter integer;
BEGIN

RETURN QUERY                            -- get the records that actualy exist
SELECT sub_item, sal_subject
FROM   sal_subject 
WHERE  sub_item = prm_item;

GET DIAGNOSTICS _counter = ROW_COUNT;   -- save number of returned rows.

RETURN QUERY
SELECT NULL, NULL                       -- fill the rest with null values
FROM   generate_series(_counter + 1, _kiek);

END;
$BODY$ LANGUAGE plpgsql VOLATILE STRICT;

Details zu plpgsql im Handbuch (Link zu Version 8.3).