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
то получаю все совпадение, а не только одно.