暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 在Get函数中提升NO_DATA_FOUND

ASKTOM 2020-07-27
327

问题描述

嗨,团队成员

我的任务是维护下面类似的代码。
函数从状态返回描述
代码表。

异常NO_DATA_FOUND被编码为进行加注。

当我用 “坏” 状态代码测试函数时
值,从双重工作中选择,一个空行
是用蟾蜍归还的。

有一个用NVL编码的返回,它不会
当出现NO_DATA_FOUND异常时执行。

当我使用函数对查询进行编码时
具有良好和不良 (或缺失) 状态代码的表
值查询工作返回
良好状态代码,对于不良状态代码为null。

加薪有什么成就?

谢谢
查尔斯

---------------------------------------

select get_state_name('ZZ') from dual;


---------------------------------------

create function get_state_name 
       (p_state_cd_in in varchar2) 
       return varchar2 
    is
    ---- Variables
         v_state_name     varchar2(50) := null;
begin
   select   state_name 
     into   v_state_name
     from   state
    where   state_cd = p_state_cd_in
      and   rownum   < 2;

   return   nvl(v_state_name,'NA');

exception
   when no_data_found 
   then raise;
end get_state_name;



专家解答



exception
  when ANY_EX then raise;


什么也不做-它只是重新注册异常。这里的处理程序是没有价值的。

只有当state.state_name的值可以为null时,NVL才会在这里发挥作用。

请注意,SQL和PL/SQL之间有一个微妙的区别-在SQL中调用NDF时不会引发。但是它在PL/SQL中:

create or replace function f ( p varchar2 ) 
  return int as
  retval int;
begin

  select 1 
  into   retval
  from   dual
  where  dummy = p;
  
  return retval;

end f;
/

var v varchar2(1);

exec :v := f ( 'Y' );

ORA-01403: no data found

select f ( 'Y' ) from dual;

F('Y')   
    

文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论