postgresql 如何从SQL编辑器调用将自定义类型数组作为参数的函数

j0pj023g  于 2023-03-17  发布在  PostgreSQL
关注(0)|答案(1)|浏览(130)

我创建了一个自定义类型,如下所示:

CREATE TYPE my_schema.sample_type
AS
(
    id int,
    categories int[], 
    body text
);

此类型用作函数中的数组参数:

CREATE OR REPLACE FUNCTION my_schema.bulk_operation(
    array_content my_schema.sample_type[]
)
RETURNS SETOF my_schema.sample_result_type
AS $$
DECLARE
-- 
BEGIN
--
--
END;
$$ LANGUAGE plpgsql;

我试图从SQL编辑器运行这个函数,但找不到如何创建这个数组参数并将其传递给函数。
我最近的尝试是创建一个如下所示的块,并使用my_schema.sample_type的单个示例定义一个变量,然后在运行函数之前将其添加到数组中:

DO
 LANGUAGE plpgsql $$
DECLARE
    my_instance my_schema.sample_type;
BEGIN
    SELECT 
      1 AS id,
      '{10, 15}':: int[] AS categories,
      'some content' as body
    INTO my_instance;
END

但是它抱怨变量声明。

l0oc07j2

l0oc07j21#

您可以创建一个行数组,然后将其强制转换为您的类型

select ARRAY[ROW(1,'{10, 15}':: int[],'constant'),
             ROW(2,'{10, 15}':: int[],'another constant')]::my_schema.sample_type[];

相关问题