相关疑难解决方法(0)

使用%TYPE在PostgreSQL中声明复合类型的变量

问题:如何在存储函数中声明相同类型的变量参数?

简单的答案是使用%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因为我的功能稍微复杂一点, …

postgresql polymorphism types stored-procedures plpgsql

2
推荐指数
1
解决办法
6492
查看次数