簡體   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