Postgres sql 函数没有给出正确的计数

Postgres sql function is not giving proper count

我正在使用下面的查询来检查下面数据库中的数据计数是代码。

--- select "fn_delete_data"('7503','Test','ONE');
-- DROP FUNCTION fn_delete_data(character varying,character varying,character varying) 
CREATE OR REPLACE FUNCTION public."fn_delete_data"(
    IN IN_id character varying,
    IN IN_source character varying,
    IN IN_deletion_type character varying,
    OUT Out_message character varying,
    OUT Out_is_success INTEGER
)AS $$
DECLARE
    v_count integer := 0;
BEGIN
raise notice 'v_count %', v_count;
    CREATE TEMP TABLE "simple_count" ON COMMIT DROP AS(select * from public.client where "other_id" = IN_id
                UNION
                select * from public.client where "id" = IN_id);
                
    select count(*) INTO v_count from simple_count; 
    raise notice 'v_count %', v_count;
    IF (v_count > 0) THEN
        Out_is_success = 0;
        Out_message = 'Data Found. Not Allow to delete';
    ELSE
        Out_is_success = 1;
        Out_message = 'No Data found. Allow to delete';
    END IF;
END 
$$ LANGUAGE plpgsql;

我有 print v_count ,它给出了每次差异值。第一个打印给我 v_count 0 另一个打印给出每次差异计数当我 运行 查询外部函数时它给我正确的 1 计数。我不知道我做错了什么请帮忙。

我认为问题出在你的临时工上 table ON COMMIT DROP,我认为它在创建自身后会自行下降,因为没有事务, 所以你可以简化你的功能,它应该工作:

CREATE OR REPLACE FUNCTION public."fn_delete_data"(
    IN IN_id character varying,
    IN IN_source character varying,
    IN IN_deletion_type character varying,
    OUT Out_message character varying,
    OUT Out_is_success INTEGER
)AS $$
DECLARE
    v_count integer := 0;
BEGIN
    raise notice 'v_count %', v_count;
    select count(*) INTO v_count from public.client where IN_id in ("Id", "other_id"); 
    raise notice 'v_count %', v_count;
    IF (v_count > 0) THEN
        Out_is_success = 0;
        Out_message = 'Data Found. Not Allow to delete';
    ELSE
        Out_is_success = 1;
        Out_message = 'No Data found. Allow to delete';
    END IF;
END 
$$ LANGUAGE plpgsql;