2017-05-31 43 views
1

說,我有表XX_TEST_DATA其被用來填充下方的PL/SQL塊中嵌套表(請注意註釋):值分配給嵌套表沒有循環

DECLARE 

    CURSOR XX_DATA_CUR 
    IS 
    SELECT * 
    FROM XX_TEST_DATA; 

    TYPE TYP_XX_TEST IS TABLE OF XX_TEST_DATA%ROWTYPE INDEX BY PLS_INTEGER; 
    XX_REC TYP_XX_TEST; 

BEGIN 
    OPEN XX_DATA_CUR; 
    FETCH XX_DATA_CUR 
    BULK COLLECT 
    INTO XX_REC; 
    CLOSE XX_DATA_CUR; 

    for i in 1..XX_REC.count loop 

     XX_REC(i).BATCH_NAME := 'Batch 1'; -- This is the Line 

    end loop; 

END; 

我想將值「批1」分配給嵌套表內的所有記錄。如果不循環所有記錄,這可能嗎? 類似下面:

BEGIN 
    OPEN XX_DATA_CUR; 
    FETCH XX_DATA_CUR 
    BULK COLLECT 
    INTO XX_REC; 
    CLOSE XX_DATA_CUR; 

    XX_REC.BATCH_NAME := 'Batch 1'; -- 

END; 

我知道上面塊是行不通的,但我希望才達到類似的東西。

測試表

Create table XX_TEST_DATA 
(
    XX_ID   NUMBER 
, XX_DATA1  VARCHAR2(100) 
, XX_DATA2  VARCHAR2(100) 
, BATCH_NAME VARCHAR2(100) 
);  

回答

1

值的DDL可以設置爲SELECT的一部分,那麼就沒有必要更新集合。

DECLARE 
    TYPE TYP_XX_TEST IS TABLE OF XX_TEST_DATA%ROWTYPE INDEX BY PLS_INTEGER; 
    XX_REC TYP_XX_TEST; 
BEGIN 
    SELECT XX_ID, XX_DATA1, XX_DATA2, 'Batch 1' 
    BULK COLLECT INTO XX_REC 
    FROM XX_TEST_DATA; 
END; 
/