declare
terr_samp M_TERRITORY.TERRITORY_NME%type;
begin
select nvl(TERRITORY_NME,0) into terr_samp from M_TERRITORY ;
end;
terr_samp M_TERRITORY.TERRITORY_NME%type;
begin
select nvl(TERRITORY_NME,0) into terr_samp from M_TERRITORY ;
end;
terr_samp M_TERRITORY.TERRITORY_NME%type;
begin
select TERRITORY_NME into terr_samp from M_TERRITORY where TERRITORY_NME is not null;
end;
大家可以试试看就知道了,依然报错!
不过如果写成就可以了!
declare
terr_samp M_TERRITORY.TERRITORY_NME%type;
begin
select nvl(min(TERRITORY_NME),0) into terr_samp from M_TERRITORY ;
end;其中,不一定用min函数,任意其他类似地都可以!比如max,avg,sum等
terr_samp M_TERRITORY.TERRITORY_NME%type;
begin
select NVL(min(TERRITORY_NME),-1) into terr_samp from M_TERRITORY ;
end;
'-1'用一个在这个表单中不存在 的值做标志!
这里应该有两种情况吧
一 是 terr_samp is null
二 是 多行对一行的错(too_row)吧
不过不明白为什么不用异常处理 其实异常处理很好啊:可以知道那是由于什么原因产生异常
然后解决它
exception
when No_Data_Found then
raise_Application_Error(-20023,'空值异常');
when others then
raise_application_Error(-20020,'异常'||SQLERRM);
rollback;