Oracle FUNCTION与PROCEDURE的最大区别

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

我们常用的function如:

select max(a) from table ;

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

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

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

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

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

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

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

猜你喜欢

转载自dacoolbaby.iteye.com/blog/1841470
今日推荐