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

为什么oracle中的应用程序上下文使用PL/SQL过程,oracle,plsql,triggers,oracle11g,applicationcontext,Oracle,Plsql,Triggers,Oracle11g,Applicationcontext,为什么我们要使用包来检索会话数据并设置数据库会话上下文。 我想说的是,当我们为包创建登录触发器时 我们为什么不在触发器中编写代码来检索和设置会话呢。 为什么我们需要使用程序和包 前 开始登录数据库后创建触发器集\u empno\u ctx\u触发器 sysadmin\u ctx.set\u empno\u ctx\u pkg.set\u empno//这里我们称之为过程 我想知道为什么我需要调用过程,我们不能在触发器中编写相同的代码吗 结束 简单的答案是我们可以直接在触发器中编写代码。这样做被认

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

  • 开始登录数据库后创建触发器集\u empno\u ctx\u触发器
  • sysadmin\u ctx.set\u empno\u ctx\u pkg.set\u empno//这里我们称之为过程
    我想知道为什么我需要调用过程,我们不能在触发器中编写相同的代码吗
  • 结束
    简单的答案是我们可以直接在触发器中编写代码。这样做被认为是不好的做法

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

    还有一个学派认为,尽管这更多地适用于DML触发器,而不是这里的系统触发器



    另一件相关的事情是应用程序上下文必须与PL/SQL包相关联。这就是Oracle实现它们的方式。因此在这方面没有选择

    你的链接无效。