|
现有一存储过程需要使用megre into 变量用户群编码,然后拼装表名,获取目标用户群的号码及号码对应的群编码:
、先读取要遍历的群组编码,比如app_001,app_002
2、表名 vv_table_name1:='tb_boss_'||group_code.group_code||'_group';
3、插入对应的表
MERGE INTO tb_bossopt_usernum_group_d a
--- 读取19个群组群号
USING(select t.date_time,t.phone_number from '|| vv_table_name1||' t where
t.statis_date in (select /*+parallel(t,4)*/ max(date_time) from '|| vv_table_name1||')) b
ON (a.phone_number =b.phone_number)
WHEN MATCHED THEN
UPDATE
SET
a.group_no1=(CASE WHEN a.group_no1 is null THEN '''||group_code.group_id||''' else a.group_no1 END),
a.group_no2=(CASE WHEN a.group_no2 is null and a.group_no1 is not null THEN '''||group_code.group_id||''' else group_no2 END),
a.group_no3=(CASE WHEN a.group_no3 is null and a.group_no2 is not null THEN '''||group_code.group_id||''' else group_no3 END)
WHEN NOT MATCHED THEN
INSERT
VALUES ('||iv_date||',b.phone_number,'''||group_code.group_id||''',null,null,substr(b.phone_number,10,2))';
拼装的表是 tb_boss_app_001_group ,表里只有一个字段电话,号码,但是电话号码一旦重复,
这个过程就会报错,ORA-30926: unable to get a stable set of rows in the source tables执行失败,
插入结果表的数据如下:
20140101 13900000011 app_001 app_002 11
20140101 13900000012 app_001 app_002 up_001 12
我们的入库工具不能剔重,如果单独做一张临时表剔重后汇总所有的号码,数据量比较大每天都是千万级的数据,
请各位帮忙给个解决方法。O(∩_∩)O谢谢! |
|