为啥 oracle 中的应用程序上下文使用 PL/SQL 过程

Posted

技术标签:

【中文标题】为啥 oracle 中的应用程序上下文使用 PL/SQL 过程【英文标题】:why Application contexts in oracle uses PL/SQL procedure为什么 oracle 中的应用程序上下文使用 PL/SQL 过程 【发布时间】:2015-03-29 11:38:33 【问题描述】:

为什么我们使用包来检索会话数据并设置数据库会话上下文。 我想说的是,当我们为包创建登录触发器时 我们为什么不在触发器中编写代码来检索和设置会话。 为什么我们需要使用过程和包 例如。

    在登录到数据库后创建触发器 set_empno_ctx_trig 开始 sysadmin_ctx.set_empno_ctx_pkg.set_empno; //这里我们调用procedure 我想知道为什么我需要调用过程,我们不能在触发器里面写相同的代码吗? 结束;

【问题讨论】:

【参考方案1】:

嗯,简单的答案是我们可以直接在触发器中编写代码。这样做只是被认为是不好的做法。

为什么?部分原因是存储过程中的代码可能是可重用的,而触发器中的代码则不是。但也因为触发器中的代码往往被忽略,这使得调试更加困难。这显然是一个循环论证,因为人们倾向于忽略触发器中的代码的主要原因是因为将代码放在那里被认为是不好的做法。然而,事情就是这样。

还有一种思想流派triggers are inherently evil,尽管这更适用于 DML 触发器,而不是您在这里使用的那种系统触发器。


另一个相关的事情是应用程序上下文必须与 PL/SQL 包相关联。这就是甲骨文实施它们的方式。所以在这方面没有选择。 Find out more.

【讨论】:

您的链接无效。

以上是关于为啥 oracle 中的应用程序上下文使用 PL/SQL 过程的主要内容,如果未能解决你的问题,请参考以下文章

我在安装配置完Oracle和PL/SQL后,为啥plsql的database一栏没有可选项?

PL/SQL程序设计—— 游标

pl/sql developer中文乱码,为啥呢?怎么解决?Oracle问题

pl/sql developer中文乱码,为啥呢?怎么解决?Oracle问题

为啥在匿名 PL/SQL 块中没有立即引发异常?

pl/sql developer中文乱码,为啥呢?怎么解决?Oracle问题