Oracle12C中With FUNCTION新特性

通过with子句,我们可以把很多原本需要存储过程来实现的复杂逻辑用一句SQL来进行表达,

在12C中,with的功能又有所增强,在with里可以直接定义一个函数。

比如

Oracle12C中With FUNCTION新特性

甚至可以支持自治事务函数,在函数中进行DML操作

Oracle12C中With FUNCTION新特性

而在11G中,则直接报错ORA-00905

Oracle12C中With FUNCTION新特性

需要注意的是:在function定义的end后面不能跟函数名称

这种语法在查询DG备库查询中可以派上用场,在一个STANDBY备库中,我们不能在只读数据库中创建函数,但通过with子句,我们把函数定义在select语句中,就完美规避了这一问题。