2016-03-31 16 views
0

Parametre olarak integer[] dizisini alan bir işlev var. Ben bu fonksiyonu çağırdığınızdaPostgreSQL - Bir işlevden bağımsız değişken olarak bir tamsayı dizisi nasıl oluşturulur

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; 

Ve ben böyle yapmak zorunda:

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 
    ); 

ama işlevi ?:

get_master_products(array[ (SELECT id, FROM products WHERE composers > 0) ]) 
aramaya böyle bir şey yapmak için bir yol var

otomatik olarak bir SQL sorgusu ile pass dizisi oluşturmak için ??

Lütfen bana yardım edebilir misiniz?

size

cevap

0

kullanın array_agg ederiz:

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