通过with子句,我们可以把很多原本需要存储过程来实现的复杂逻辑用一句SQL来进行表达,
在12C中,with的功能又有所增强,在with里可以直接定义一个函数。
比如
甚至可以支持自治事务函数,在函数中进行DML操作
而在11G中,则直接报错ORA-00905
需要注意的是:在function定义的end后面不能跟函数名称
这种语法在查询DG备库查询中可以派上用场,在一个STANDBY备库中,我们不能在只读数据库中创建函数,但通过with子句,我们把函数定义在select语句中,就完美规避了这一问题。