我使用以下事务表来更新主表。我观察到的是,当事务表很小时,更新顺利进行。当大小增加时,代码失败并出现ORA-01403错误。它对我没有任何意义,因为它似乎不合逻辑。任何帮助或方向都会很棒。
data temp(index=(comp=(card_number cell_package_sk)));
set import_data;
keep card_number cell_package_sk SMS_STATUS SMS_SENT_DT LastUpdate;
run;
data master (drop=new_status new_date1 new_date2);
set temp(rename=(SMS_STATUS= new_status SMS_SENT_DT=new_date1 LastUpdate=new_date2) in=a) key=comp / unique;
modify master;
select (_iorc_);
when (%sysrc(_sok)) do;
if a then do;
if upcase(new_status) = "DELRD" then SMS_STATUS = "DELIVERED";
ELSE if upcase(new_status) = "DND" then SMS_STATUS = "NDNC";
ELSE if upcase(new_status) = "NO-DLR" then SMS_STATUS = "UNKNOWN";
ELSE SMS_STATUS = "FAILED";
SMS_SENT_DT = new_date1;
SMS_DELIVERED_DT = new_date2;
replace;
end;
else do;
_error_ = 0;
end;
end;
otherwise do;
_ERROR_ = 0;
end;
end;
run;
错误:更新/删除失败。观察结果可能已经改变或 自阅读时删除。 ORACLE执行错误: ORA-01403:未找到数据。
请注意,Master是oracle表,而temp是SAS数据集。主表有大约4500万条记录,交易有50万条。