[英]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.