中易网

存储过程空值处理

答案:3  悬赏:70  
解决时间 2021-01-22 16:43
存储过程空值处理
最佳答案
declare
v_num int;
v_num1 int;

select count(*) into v_num1 from table1;
if v_num1=0
then v_num:=0
else
select a.num1 into v_num from table1 ;
end if;大概就这个意思吧


追问:当select count(*) from table1; 查询不到任何数据的时候,其实count(*)不是0,是空的。
所以into v_num1的时候就会报错了
追答:你把一个表置空,你查一下看是0不,反正我这是0


追问:刚才我也试了下~确实可以,我之前使用过,但是当时有问题,具体情况我记不清了,所以印象中就感觉这么写不行,也可能是我当时判断的有问题。谢谢了。
追答:额,你看看这样弄到你程序里行不行,不行的话再把问题说一下
全部回答
在查询时加判断
select a.num1 into v_num from table1 where a.num1 is not null
或者 单空值时定义固定值
select isnull(a.num1,0) into v_num from table1 where a.num1 is not null
追问:where a.num1 is not null,在这里是没有作用的,因为不是查询到的记录的num1字段是空,而是查询结果根本没有任何记录,什么都没有查询到,在into的时候会报错。
把这个函数加入数据库,调用函数提前判断一下数据库中有没有数据。
有数据返回1无数据返回0
function fun_ExistRecord (stablename in varchar2,sWhereItem in varchar2) return number
is
ssql varchar2(1000);
iR number(1);
begin
if swhereitem is null then
ssql:='select case when exists ( select * from ' || stablename || ' ) then 1 else 0 end as aa from dual';
else
ssql:='select case when exists ( select * from ' || stablename || ' where ' ||
swhereitem ||' ) then 1 else 0 end as aa from dual' ;
end if ;
execute immediate ssql into ir;
return ir;
end fun_ExistRecord;
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
有谁知道有关the lost generation,the beat g
大疆F450四轴飞行器航拍使用什么牌子的电池好
生酮饮食孩子出现疴肚如何防止
最近挺经常想xxoo的,但是没喜欢的人实在不愿
印光大师:密宗不经过阿阇黎传授可否诵咒结印
混凝土过梁净跨6米采用哪个图集
好乐奶茶咖啡地址在什么地方,我要处理点事
香港房价多钱?我看洗碗工的工资都1万多
手机酷狗文件目录,这个.fssingerres目录下以
请问成都少儿手足抽搐证?西南脑科可以?
风险控制力
眼睛遇风流泪怎样办?
龙宝幼儿园地址好找么,我有些事要过去
美容滚针可以自己操作吗?
2岁宝宝牙齿涂氟可以在睡觉时进行吗
推荐资讯
有人出国留学过的吗?怎么样才能考上呢!
借cf的账和密码必须有v是真的
耳膜穿孔用做心电图吗?
20岁增高的办法
香港买裸钻便宜吗
求儒家思想主张
行家给说说精品童装店装修怎么做?
ST,CF,和SS三者区别在哪儿
红外线发光二极管
我怀孕三个多月快四个月了,想知道引产要多久
阳台门套价格怎样?有必要做门套吗?
伤口和绷带粘在一起了怎么办
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?