下面是我的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;
/
数据没有插入表中,你能解释一下原因吗?
答案 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'变量的值