在存储过程调用中出现莫名奇妙的错误:
ORA-00932: 数据类型不一致: 应为 -, 但却获得 –
参照网上分析,原因如下,是用 for ....loop 的方式,使用游标,之前由于要使用的的字段名字是一样的,所以都使用 c_row也一直没有报错,但是后面那个 c_row.prod_code 改为 c_row.fund_code 的时候,就报了这个错,分析原因是由于 c_row 在第一次用的时候就已经将字段给规定好了,只有相同的字段才会获取进去。
--检查 多添利产品 的是否未加入考核产品表,没有就添加进去
v_ExecTime:=sysdate;
for c_row in (
select a.prod_code||'-'||a.prodalias_name||'-自动加入考核产品表' as msg,a.*
from hs_prod.prodcode@otc a
where a.prod_name like '%添利%' and a.prod_code not in(select cpbh from t_Jxkh_Khcp)
)
loop
insert into t_jxkh_khcp (CPBH, SSGS, CPMC, CPLB, CPZT, ZCZSBL, SFJSKHJ, TCBLFS, TCBL, IS_JS_SG, XFRQ, HDQSRQ, HDJZRQ, KZBS, BZ, LRYGBH, LRRQ, ZHXGYGBH, ZHXGSJ, IS_KFJJ, IS_K2, SRLX)
values (c_row.prod_code, null,c_row.prodalias_name, '2', '1', 0.60000, '0', null, null, 0, null, null, null, null, null, 1, to_char(sysdate,'yyyymmdd'), 1,sysdate, 0, 0, 0);
insert into t_gfcp (STOCKCODE, STOCKNAME, INVALID, PERCENT, IS_JS_SG, PERCENT_BANK, IS_KHJL)
values (c_row.prod_code,c_row.prodalias_name, 1, 0.6, 0, 0.6, 0);
end loop;
--检查 多添富产品 的是否未加入考核产品表,没有就添加进去
v_ExecTime:=sysdate;
for c_row2 in (
select a.fund_code||'-'||a.fund_name||'-未加入考核产品表'as msg,a.* from hs_user.ofstkcode@OTC a
where a.fund_name like '%添富%' and a.fund_code not in(select cpbh from t_Jxkh_Khcp)
)
loop
insert into t_jxkh_khcp (CPBH, SSGS, CPMC, CPLB, CPZT, ZCZSBL, SFJSKHJ, TCBLFS, TCBL, IS_JS_SG, XFRQ, HDQSRQ, HDJZRQ, KZBS, BZ, LRYGBH, LRRQ, ZHXGYGBH, ZHXGSJ, IS_KFJJ, IS_K2, SRLX)
values (c_row2.fund_code, null,c_row2.fund_name, '2', '1', 0.60000, '0', null, null, 0, null, null, null, null, null, 1, to_char(sysdate,'yyyymmdd'), 1,sysdate, 0, 0, 0);
insert into t_gfcp (STOCKCODE, STOCKNAME, INVALID, PERCENT, IS_JS_SG, PERCENT_BANK, IS_KHJL)
values (c_row2.fund_code,c_row2.fund_name, 1, 0.6, 0, 0.6, 0);
--经常短信通知太麻烦
--agfhd_p_sendsms('13922181973,18613036646',c_row.msg);
end loop;