首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >标识何时在SQL查询或PL/SQL过程中执行函数

标识何时在SQL查询或PL/SQL过程中执行函数
EN

Stack Overflow用户
提问于 2019-02-07 08:55:19
回答 1查看 183关注 0票数 2

在SQL查询中何时执行pl/sql函数以及何时在过程或PL/SQL匿名块中执行?(我不想传递任何参数进行手动识别)

我需要的主要原因是,当一个函数在SQL查询中执行时--我不想在失败时引发异常--我只需要返回一个NULL值就可以了。但是当在pl/sql脚本中执行相同的函数时,我想引发异常。

提前谢谢你。

EN

Stack Overflow用户

发布于 2019-02-07 09:07:16

为什么不向函数中添加一个参数以指示是否抛出异常/返回null?当您调用该函数时,您可以选择所需的行为。

代码语言:javascript
运行
复制
create or replace function do_something(p_parameter1      < some_type >
                                       ,p_raise_exception varchar2 default 'Y') return < sometype > is
begin
      --.. calculating .. .
      return result;
exception
   when others then
      if p_raise_exception is 'Y'
      then
         raise;
      else
         return null;
      end if;
end;

或者,owa_util似乎提供了一些您可以使用的功能。

代码语言:javascript
运行
复制
create or replace function do_something(p_parameter1 < some_type >) return < sometype > is
   l_owner    varchar2(100);
   l_name     varchar2(100);
   l_lineno   number;
   l_caller_t varchar2(100);
begin


   --.. calculating .. .
      return result;
exception
   when others then
      owa_util.who_called_me(l_owner, l_name, l_lineno, l_caller_t)
      -- who called me result seems empty when called from sql.
      if l_owner is not null
      then
         raise;
      else
         return null;
      end if;
end;

当然:Hiding all errors is bad practise

票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54569528

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档