嵌套块在PL / SQL过程中是否会对性能产生影响?(Do nested blocks have any performance impact in PL/SQL procedures?)
在PL / SQL过程中,我经常将语句包装在一个块中(即开始...结束),以便我可以从该语句中隔离异常。 例如,如果我正在执行可能引发“no_data_found”的select,我可以处理该异常是由该语句引发的,但是让其他异常传播到该过程的主异常处理程序。
我想知道的是这些额外的块是否会对性能产生任何影响。 我知道引发异常会对性能产生影响,所以我从不依赖异常作为控制流机制。 但块本身是否有任何影响?
例如,如果这个性能有任何差异:
procedure do_something as declare some_var number; begin select some_value into some_var from some_table; exception when others then raise_application_error(-20000, 'Exception: ' || sqlerrm, true); end do_something;
还有这个:
procedure do_something as declare some_var number; begin begin select some_value into some_var from some_table; exception when no_data_found then some_var := -23; --some default value end; exception when others then raise_application_error(-20000, 'Exception: ' || sqlerrm, true); end do_something;
(我知道这段代码是荒谬的,但我希望它能说明我的意思!)
我真正关心的是没有引发异常时的性能 - 当出现异常时我可以接受性能下降。
In PL/SQL procedures, I often wrap statements in a block (i.e. begin...end) so that I can isolate exceptions from that statement. For example, if I'm doing a select that might raise "no_data_found", I can handle that in the knowledge that the exception was raised by that statement, but let other exceptions propagate to the main exception handler for the procedure.
What I'm wondering is if these additional blocks have any performance impact. I know raising exceptions has a performance impact, so I never rely on exceptions as a control flow mechanism. But does the block itself have any impact?
For example, should there be any difference between the performance of the this:
procedure do_something as declare some_var number; begin select some_value into some_var from some_table; exception when others then raise_application_error(-20000, 'Exception: ' || sqlerrm, true); end do_something;
and this:
procedure do_something as declare some_var number; begin begin select some_value into some_var from some_table; exception when no_data_found then some_var := -23; --some default value end; exception when others then raise_application_error(-20000, 'Exception: ' || sqlerrm, true); end do_something;
(I know this code is nonsensical, but I hope it illustrates what I mean!)
All I really care about is the performance when no exceptions are raised - I can accept performance degradation when there is an exception.
原文:
相关文章
更多PL/SQL PLS_INTEGER类型对性能实验测试
Oracle的存储过程中如何调用sql loader?
Solr Performance Factors(Solr 性能因素)
在oracle9i中如何编写sql或者存储过程来知道执行sql或者函数花费的时间?
SQL Server 压力测试
sql问题
高性能Web应用打造攻略:扩展过程中20个最大的绊脚石
namenode上块管理--BlockMap
spring 嵌套事务 的 加锁 问题
《CMMI+敏捷整合开发:更快改进性能的案例与实用技术》( Integrating CMMI and Agile Development: Case Studies and Proven Techniques for Faster Performance Improvement )扫描版[PDF]
最新问答
更多获取MVC 4使用的DisplayMode后缀(Get the DisplayMode Suffix being used by MVC 4)
如何通过引用返回对象?(How is returning an object by reference possible?)
矩阵如何存储在内存中?(How are matrices stored in memory?)
每个请求的Java新会话?(Java New Session For Each Request?)
css:浮动div中重叠的标题h1(css: overlapping headlines h1 in floated divs)
无论图像如何,Caffe预测同一类(Caffe predicts same class regardless of image)
xcode语法颜色编码解释?(xcode syntax color coding explained?)
在Access 2010 Runtime中使用Office 2000校对工具(Use Office 2000 proofing tools in Access 2010 Runtime)
从单独的Web主机将图像传输到服务器上(Getting images onto server from separate web host)
从旧版本复制文件并保留它们(旧/新版本)(Copy a file from old revision and keep both of them (old / new revision))
Copyright ©2023 peixunduo.com All Rights Reserved.粤ICP备14003112号
本站部分内容来源于互联网,仅供学习和参考使用,请莫用于商业用途。如有侵犯你的版权,请联系我们(neng862121861#163.com),本站将尽快处理。谢谢合作!