当前位置:网站首页>postgresql 函数的参数为自定义类型时传参格式

postgresql 函数的参数为自定义类型时传参格式

2022-06-11 03:14:00 谷满满

自定义类型

CREATE TYPE test_type_input AS (
    id integer,
    name character varying(200)
);

自定义函数

CREATE OR REPLACE FUNCTION public.test_function(
	in_pro_arr test_type_input[],
	OUT pro_len integer,
	OUT out_name character varying[])
    RETURNS record
    LANGUAGE 'plpgsql'
    COST 100
    VOLATILE 
AS $BODY$
DECLARE
loop_index integer;
pro_info record;
arr_length integer;
BEGIN
    IF in_pro_arr is null or cardinality(in_pro_arr) <= 0 then
		pro_len = -1;
		out_name = null;
        return;
    END IF;
	loop_index = 1;
	arr_length = array_length(in_pro_arr,1);
	pro_len = arr_length;
    LOOP
		pro_info = in_pro_arr[loop_index];
		out_name[loop_index] = pro_info.name;
		loop_index = loop_index + 1;
		IF loop_index > arr_length THEN
			exit;
		END IF;
	END LOOP;
END;
$BODY$;

函数调用示例

SELECT * from test_function(
    array[
        (1, '电脑'),
        (2, '书本'),
        (3, '水杯')
    ]::test_type_input[]
);

原网站

版权声明
本文为[谷满满]所创,转载请带上原文链接,感谢
https://blog.csdn.net/antch620/article/details/124968349