问题:如何在存储函数中声明相同类型的变量参数?
简单的答案是使用%TYPE,这有效:
CREATE OR REPLACE FUNCTION test_function_1(param1 text)
RETURNS integer AS
$BODY$
DECLARE
myVariable param1%TYPE;
BEGIN
return 1;
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
Run Code Online (Sandbox Code Playgroud)
但问题是何时param1是复合类型:
CREATE TYPE comp_type as
(
field1 text
)
CREATE OR REPLACE FUNCTION test_function_2(param1 comp_type)
RETURNS integer AS
$BODY$
DECLARE
myVariable param1%TYPE;
BEGIN
return 1;
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
Run Code Online (Sandbox Code Playgroud)
这不起作用:
ERROR: type comp_type does not exist [SQL State=42704]
Run Code Online (Sandbox Code Playgroud)
那么当param1复合型时我该怎么办?
(注意:myVariable comp_type因为我的功能稍微复杂一点, …