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

自定义类型

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[]
);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值