oracle中NULL值的问题(急)

zysys 2003-05-26 11:18:09
从别的表中选取一个字段的值,此字段可能为空,也可能不是空,
现在要把此数据放入一个变量中,如何做!
例如:
select uqi into num from emp_cod where uqi=100// 变量有可能有值有可能是NULL,但变量中是NULL时此句出错说没有找到数据。我还必须要此空值,要判断下面的事!
IF NUM IS NOT NULL THEN
//处理其它事!
END IF
...全文
60 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
tulip2108 2003-05-30
  • 打赏
  • 举报
回复
同意bobfang的处理
shuipipi 2003-05-30
  • 打赏
  • 举报
回复
正如 bobfang(匆匆过客) 所说的:
“如果是字段的值是NULL,select时是不会报‘没有找到数据’的。出现‘没有找到数据’应当是未找到记录,可以用exception来捕获错误”

泥的问题跟使用NVL函数无关!
kyc 2003-05-29
  • 打赏
  • 举报
回复
select nvl(可能是空的,0) from table where condition

nvl,就是如果前者为空,就用后者替换。
gogo168 2003-05-29
  • 打赏
  • 举报
回复

decalare
n integer;
begin
select count (*) into n from ... where ..
if n=0 then
....
else
..
end if;
end;
tangkp 2003-05-28
  • 打赏
  • 举报
回复
select uqi into num from emp_cod where uqi=100这条语句只有两种可能结果,一种是uqi=100,另一种就是没有找到记录,你在说num可能为NULL的情况,那就是说明你在number num是没有初始化啊,系统默认是NULL。
但是建议你不要这样做,
IF NUM IS NOT NULL THEN
//处理其它事!
END IF
因为在sql没有找到记录时,num的值是不会被改变,如果在这个sql之前num的被改变了那你if里的代码永远不会被执行。

可以这样
IF SQL%NOTFOUND THEN
//处理其它事!
END IF


tw_cshn 2003-05-27
  • 打赏
  • 举报
回复
用decode也可以
zhizi 2003-05-27
  • 打赏
  • 举报
回复
select nvl(uqi,0) into num from emp_cod where uqi=100
armu80830 2003-05-27
  • 打赏
  • 举报
回复
用NVL函数
ODPSOFT 2003-05-27
  • 打赏
  • 举报
回复
use nvl(columnname,'privatevalue').
bobfang 2003-05-27
  • 打赏
  • 举报
回复
如果是字段的值是NULL则select时是不会报“没有找到数据”的。出现“没有找到数据”应当是未找到记录,可以用exception来捕获错误,如:
begin
select uqi into num from ...
exception
when NO_DATA_FOUND then
begin
--如果未找到记录的特殊处理
end;
when others then
being
--发生其他类型错误时的处理
end;
end;
zysys 2003-05-27
  • 打赏
  • 举报
回复
怎么没人帮忙呀!!!!!!!!!!!!!!!!!!!!!!!!!!!

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧