2016-04-12 7 views
0

Unten ist mein PL/SQL-Block, wo ich Datensätze durch Auswahl einer anderen Tabelle einfügen möchten, schlecht auf Variablen, die ich ausgefüllt habe.Verwendung in einer Tabelle einfügen mit einer Select-Anweisung

DECLARE 
    CURSOR cust_insert is 
    select distinct UBAN,SUBSCRIBER_NO from not_exists_inv_RC_CINF; 

    i_cust_id varchar2(100); 
    i_sub_no  varchar2(100); 

Begin 

    dbms_output.enable(2000000); 

    Open cust_insert; 
    Loop 
    Fetch cust_insert into i_cust_id,i_sub_no; 
    Exit when cust_insert%NOTFOUND; 

    dbms_output.put_line('CUSTOMER IS :- '||i_cust_id 
     ||' SUBSCRIBER IS :- '||i_sub_no); 

    insert into not_exists_inv_RC_CINF_TRB 
    select a.MST_TRX_ID,entity_id 
    from lspappc.trb9_mst_log_1v a, lspappc.trb1_actv b 
    where a.ACTV_CODE_ID=b.ACTV_CODE_ID 
    and PART_DEP_ENT like 'CUSTOMER=i_cust_id' 
    and general_data_c like '%i_sub_no%' 
    and a.ACTV_CODE_ID=44; 

    commit; 
    END LOOP; 

    Close cust_insert; 
End; 
/

Die Daten werden nicht in die Tabelle eingefügt, können Sie erklären warum?

+1

Dieser Teil der Insert-Anweisung scheint nicht gut gebildet zu sein 'PART_DEP_ENT wie 'KUNDE = i_cust_id'' Meinen Sie" PART_DEP_ENT wie'% '|| i_cust_id || % '' – cableload

Antwort

4

Sie behandeln die PL/SQL-Variablen als Zeichenfolgenliterale. dies:

general_data_c like '%i_sub_no%' 

sollte sein:

general_data_c like '%' || i_sub_no || '%' 

Ich bin nicht sicher, ganz das, was Sie versuchen, mit dem zu tun:

PART_DEP_ENT like 'CUSTOMER=i_cust_id' 

, da es keine Wildcards und das Konstrukt sieht sowieso komisch aus; Sie könnten wollen:

PART_DEP_ENT = 'CUSTOMER=' || l_cust_id 

... aber das ist weniger klar.

Mit den literalen Werten, die Sie haben, gibt es jedoch keine übereinstimmenden Datensätze in der Tabelle, aus der Sie auswählen - denken Sie daran, Sie suchen nach der Zeichenfolge 'i_sub_no', nicht den Wert der Variablen "i_sub_no".

+0

Danke, es hat funktioniert –

Verwandte Themen