У меня есть этот вопрос, я выполнял некоторую миграцию с SQL Сервера на PostgreSQL 12.
Сценарий, который я пытаюсь выполнить sh:
Функция должен иметь инструкцию RETURN, будь то SETOF 'tableType' или RETURN TABLE (некоторое количество столбцов)
Тело начинается с количества записей, если не найдено записей на основе входных параметров, тогда просто Возвращает ноль (0
), иначе возвращает полный набор записей, определенный в операторе RETURN.
Эквивалентная часть в SQL Server или Oracle: Они могут просто поместить инструкцию SELECT внутрь Процедура для выполнения sh этого. Но это довольно сложно в случае PostgreSQL.
Любое предложение, пожалуйста.
Что я мог бы сделать sh до сих пор - если не найдено ни одной записи, он просто вернется NULL, возможно, используется PERFORM, или может быть выбрано NULL в качестве имени столбца для возвращаемых столбцов tableType.
Я надеюсь, что все ясно!
То, что я хочу, выглядит примерно так -
================================================ ============
CREATE OR REPLACE FUNCTION public.get_some_data(
id integer)
RETURNS TABLE ( id_1 integer, name character varying )
LANGUAGE 'plpgsql'
AS $BODY$
DECLARE
p_id alias for $1;
v_cnt integer:=0;
BEGIN
SELECT COUNT(1) FROM public.exampleTable e
WHERE id::integer = e.id::integer;
IF v_cnt= 0 THEN
SELECT 0;
ELSE
SELECT
a.id, a.name
public.exampleTable a
where a.id = p_id;
END;
$BODY$;