oracle判断字段为空时选用别的字段_如何动态判断一个表的多个字段值是否为空...

本文介绍了一段 Oracle SQL 脚本,该脚本通过双重循环遍历表格 cux_items_temp1 的所有列和指定行数范围内的每一行,检查单元格值是否为空,并将空值替换为 '######'。当检测到空值时,脚本记录一条日志,指出具体哪一行哪一列的数据为空,以便于后续的数据核查。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题解决:

--循环每一列

FOR cc IN (SELECT utcs.Column_NAME

FROM User_Tab_Columns utcs

WHERE utcs.TABLE_NAME = UPPER('cux_items_temp1')) LOOP

L_Curr_Col_Name := cc.Column_name;

--循环每一行

FOR L_Loop_Number IN 2..L_Total_Rows+1 LOOP

--如果为空替换为######

L_Exec_Sql :=  'SELECT DECODE('||L_Curr_Col_Name||',null,''######''),b.line1 FROM (SELECT '

||L_Curr_Col_Name||',a.line line1 FROM cux_items_temp1 a WHERE ROWNUM

||L_Loop_Number||' ORDER BY a.line DESC) b WHERE ROWNUM =1';

--读取出当前的行列交集的值和行号

L_Curr_Col_Value := NULL;

L_Curr_Line      := NULL;

EXECUTE IMMEDIATE L_Exec_Sql

INTO L_Curr_Col_Value,L_Curr_Line;

--

IF(L_Curr_Col_Value='######') THEN

--输出日志,定位错误信息

L_Msg_Flag :=L_Msg_Flag+1;

wl_iface_pkg.to_log('Message '||to_char(L_Msg_Flag)||':Row:'

||to_char(L_Loop_Number-1)||' Column:'

||to_char(L_Curr_Col_Name)||' is null,please check!',2,'*');

END IF;

END LOOP;

END LOOP;

COMMIT;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值