如何使用select语句将insert插入表中

时间:2016-04-12 16:08:30

标签: sql oracle plsql

下面是我的PL / SQL块,我想通过选择另一个表来插入记录,对我填充的变量不好。

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;
/

数据没有插入表中,你能解释一下原因吗?

1 个答案:

答案 0 :(得分:4)

您将PL / SQL变量视为字符串文字;这样:

general_data_c like '%i_sub_no%'

应该是:

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

我不确定你要做什么:

PART_DEP_ENT like 'CUSTOMER=i_cust_id'

因为没有外卡而且构造看起来很奇怪;你可能想要:

PART_DEP_ENT = 'CUSTOMER=' || l_cust_id

......但那不太清楚。

使用您拥有的文字值,在您选择的表中没有匹配的记录 - 记住,您正在查找字符串'i_sub_no',而不是`i_sub_no'变量的值