2015-02-24 26 views
1

我的碼片目前取數據到使用以下代碼目的:如何在動態查詢中使用批量收集?

SELECT ORDR_LIST(ORDER_NUMBER,ORDER_TYPE,ORDER_DATE,CLIENT_ID,CLIENT_NAME) BULK COLLECT INTO P_RESULTSET 
      FROM 
       (SELECT ORDER_NUMBER, 
         ORDER_TYPE, 
         ORDER_DATE, 
         CLIENT_ID, 
         CLIENT_NAME 
         FROM 
         (SELECT ORDER_NUMBER, 
          ORDER_TYPE, 
          TO_CHAR(ORDER_CREATED_DATE,'YYYY-MM-DD HH:MI:SS am') AS ORDER_DATE, 
          CUSTOMER_FIRST_NAME 
          ||' ' 
          ||CUSTOMER_SURNAME AS C_NAME, 
          CLIENT_ID, 
          CLIENT_NAME 
         FROM CONNECT_CUSTOMER_TRANS 
         WHERE ORDER_TYPE    =P_ORDER_TYPE 
         AND lower(CUSTOMER_SURNAME) =lower(P_LAST_NAME) 
         AND lower(CUSTOMER_FIRST_NAME)=lower(P_FIRST_NAME) 
         AND lower(CLIENT_ID)   =lower(P_CLIENT_ID) 
         AND ORDER_CREATED_DATE BETWEEN P_FROM_DT AND P_TO_DT 
) 
WHERE C_NAME=I.CUS_NAME); 

我現在有動態生成的選擇語句到一個變量VAR1。但是我無法在動態部分實現它。

代碼應該是這樣的:

SELECT ORDR_LIST(ORDER_NUMBER,ORDER_TYPE,ORDER_DATE,CLIENT_ID,CLIENT_NAME) BULK COLLECT INTO P_RESULTSET 
      FROM var1 

將由執行立即運行。

回答

6

將是這樣:

execute immediate 
'SELECT ORDR_LIST(ORDER_NUMBER,ORDER_TYPE,ORDER_DATE,CLIENT_ID,CLIENT_NAME) 
from ('||var1||')' BULK COLLECT INTO P_RESULTSET; 
+0

其工作:)。 – Krishnendu 2015-02-24 18:09:01

+0

很高興聽到它。 :) – Aramillo 2015-02-24 18:18:48