2017-06-26 1 views
0

Je souhaite insérer dans une table une requête dynamique. Comment puis-je l'atteindre? ci-dessous est ce que j'essaie.Insérer dans BULK COLLECT en exécutant une requête dynamique

VARIABLE a REFCURSOR; 

DECLARE 
PROCEDURE Pr_Get_VARIANCE_REPORT (p_billing_system_id IN NUMBER , 
             p_Sorting IN Varchar2, 
            po_Cur_Out OUT SYS_REFCURSOR) 
    IS 
     v_query1 varchar2(3000); 


v_query1 := 'Select Plan_No, Plan_name from TB_BISBILL 
      where Billing_System_ID = p_billing_system_id ORDER BY ' 
      || p_Sorting ; 

SELECT PLAN_NO, Plan_name 
bulk collect into l_invoices 
from (I need to insert by executing the v_query1). 

Comment puis-je faire cela.

ici puisque le tri est fourni par l'utilisateur donc < je dois commander par n'importe quel nom de colonne fourni par l'utilisateur.

+0

Merci Gurwinder Singh –

+0

En aparté, si vous allez faire, vous devez exécuter le paramètre de tri par 'DBMS_ASSERT.SIMPLE_SQL_NAME' par mesure de sécurité. – Allan

Répondre

4

Vous pouvez simplement écrire:

execute immediate v_query1 bulk collect into l_invoices;