Oracle   发布时间:2022-05-17  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了为什么我们不能在oracle中的select语句中执行存储过程?有什么有力的理由吗?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
create or replace procedure pr
is
    v_date date; 
begin
    SELEct sysdate into v_date from dual;
    DBMS_output.put_line(v_datE);
end pr;
sql语句中不允许使用过程,因为混合声明性和命令式编程样式会让人感到困惑.

sql语句是一个条件列表 – 由Oracle决定如何生成与这些条件匹配的结果集. PL / sql存储过程是一组以非常可预测的方式改变事物的指令.

在下面的例子中,应该执行多少次?它是在ID = 1之前还是之后执行的?如果sql语句具有预定义的顺序,那么优化器将无法推送谓词,合并子查询等,并且性能将是不可接受的.

SELEct *
from table1
where ID = 1
    and pr;

即使在选择列表中使用了一个过程,它也可能没有意义.例如,始终忽略exists中的选择列表.

SELEct * from dual where exists (SELEct pr from dual);

但实际上,sql语句有时需要与外界进行交互,并且需要一些程序逻辑.允许函数,因为它们通常只是计算某些东西并返回一个值.函数通常不依赖于程序状态,并且有很多副作用.您的函数可以使用会话变量,更新表(如果它设置为PRAGMA autonOMOUS transaCTION),设置上下文等.Oracle不能阻止您执行这些操作,但禁止sql语句中的过程将至少阻止此类代码.

大佬总结

以上是大佬教程为你收集整理的为什么我们不能在oracle中的select语句中执行存储过程?有什么有力的理由吗?全部内容,希望文章能够帮你解决为什么我们不能在oracle中的select语句中执行存储过程?有什么有力的理由吗?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: