`
dacoolbaby
  • 浏览: 1267401 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Oracle FUNCTION与PROCEDURE的最大区别

阅读更多

Oracle function里面是可以允许有DML语句的,但是不能在查询的时候使用。

我们常用的function如:

select max(a) from table ;

 

这种调用方式是不能执行带有DML的FUNCTION的。

 

但是如果不用在SQL里面是可以有的
比如 dbms_output.put_line(func(...));

如果函数里面采用自治事务,是可以有DML 的。

 

简单转载一下什么是“自治事务”:

自治事务是可以在其他事务中调用的独立事务。

自治事务可以使事务离开调用事务的上下文执行SQL操作、提交或回滚其他操作并返回到调用事务的上下文然后继续调用事务。
自治事务调用后,事务完全与调用它的主事务独立。

不会看到任何主事务尚未提交的改变、不会共享主事务的锁或资源。自治事务的改变在自治事务提交后可以被其他事务可见。
自治事务可以调用其他自治事务,嵌套的层数没有限制。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics