2015-02-24 5 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

+0

Рад это услышать. :) – Aramillo

Смежные вопросы