Sql функция возвращает только одно совпадение (plpgsql)

Почему данная функция возвращает только одно совпадение?

CREATE OR REPLACE FUNCTION test_db.get_some_data(
        a varchar,
        b varchar DEFAULT NULL
    )
    RETURNS test_db.table_with_some_data
    LANGUAGE plpgsql
    SECURITY DEFINER
    AS $$
#variable_conflict use_variable
DECLARE
    s_row test_db.table_with_some_data%ROWTYPE;
BEGIN
        SELECT s.*
            INTO s_row
            FROM test_db.table_with_some_data AS s
            WHERE s.a = a
                AND (s.b = b OR b IS NULL);

        IF (NOT FOUND) THEN
            IF (b IS NULL) THEN
                RAISE EXCEPTION 'No such "a" in the table %', a;
            ELSE
                RAISE EXCEPTION 'No such "a" % or "b" % in the table', a, b;
            END IF;
        END IF;

        RETURN s_row;
END
$$;

Как мне исправить её чтобы сохранить возможность передачи разного числа параметров (только а или а и b)? Если я просто делаю запрос

SELECT * FROM test_db.table_with_some_data AS s WHERE s.a = a

то получаю все совпадение, а не только одно.


Ответы (0 шт):