在oracle中存储过程中使用select...into语句为变量赋值的时候,
如果查询返回的记录为空或者多行的时候,就会异常退出。
解决办法:使用聚合函数处理
例如:Max
如果仅仅使用
select a.dwbh,a.jdmc into v_xzqhh,v_szmc from ydjdglb a
where substr(a.dwbh,0,6) = substr(v_kkbh,0,6);
由于满足substr(a.dwbh,0,6) = substr(v_kkbh,0,6)可能有0条或者多条,因此,记录数为0~n,只要记录数不为1,运行的时候会异常退出。
而如果使用如下语句,既可以解决这些异常问题。
select Max(a.dwbh),Max(a.jdmc) into v_xzqhh,v_szmc from ydjdglb a
where substr(a.dwbh,0,6) = substr(v_kkbh,0,6);
也可以通过case when then else end 的方式对字段为空 特殊处理