Query returning exact number of rows

前端 未结 3 417
长情又很酷
长情又很酷 2021-01-27 13:14

I have a table that stores two foreign keys, implementing a n:m relationship.

One of them points to a person (subject), the other one to a specific item.

3条回答
  •  滥情空心
    2021-01-27 13:29

    Consider this largely simplified version of your plpgsql function. Should work in PostgreSQL 8.3:

    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 about plpgsql in the manual (link to version 8.3).

提交回复
热议问题