繁体   English   中英

PostgreSQL-如何通过选择创建整数数组以作为参数传递给函数

[英]PostgreSQL - How to create an integer array from a select to pass as an argument to a function

我有一个函数,它接收一个integer[]数组作为参数。

CREATE OR REPLACE FUNCTION public.get_master_products(P_PRODUCTS_IDS integer[])
  RETURNS SETOF record
  LANGUAGE plpgsql
AS
$body$
DECLARE
    CURRENT_ID integer;
    PRODUCT RECORD;
    COMPONENT1 RECORD;
    COMPONENT2 RECORD;
    COMPONENT3 RECORD;
BEGIN
....

END;

当我调用此函数时,我必须这样做:

SELECT
    "ID",
    "CODE",
    "CODE2",
    "NAME",
    "COMPOSERS",
    "PTYPE_ID",
    "PTYPE_NAME",
    "COMPONENT_QUANTITY",
    "UM_ID",
    "LEVEL"
FROM 
    get_master_products(array[ 20, 40, 50, 80])
AS
    (
      "ID" integer,
      "CODE" varchar,
      "CODE2" varchar,
      "NAME" varchar,
      "COMPOSERS" numeric,
      "PTYPE_ID" bigint,
      "PTYPE_NAME" varchar,
      "COMPONENT_QUANTITY" numeric,
      "UM_ID" varchar,
      "LEVEL" varchar
    );

但是有没有办法做这样的事情来调用函数?:

get_master_products(array[ (SELECT id, FROM products WHERE composers > 0) ])

用SQL查询自动创建传递数组?

你能帮我吗。

谢谢

使用array_agg

get_master_products(SELECT array_agg(id) FROM products WHERE composers > 0)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM