Oracle,在存储过程调用之前执行 pl/sql 代码
Oracle, execute pl/sql code before stored procedure call
是否有可能在存储过程之前自动执行某些 PL/SQL 代码?像“on-before”之类的东西执行?
按照业务逻辑,每个存储过程都应该只在名为“登录”的一些步骤之后执行。这不是登录数据库而是登录产品,我们无法更改此行为,因为系统是由另一个团队开发的。我们不应该忘记每次都调用“登录”。
是否有任何解决方案可以在 Oracle 中自动执行此类操作?包是否有类似“初始化”的部分?
听起来您正在做的是登录到应用程序,因此实际上需要在该应用程序中调用 LOGIN 过程。 @Del 提出的问题是相关问题。如果答案是在应用程序的每个过程执行之前,那么您需要在调用该应用程序中的另一个过程之前调用该 LOGIN 过程。但是,如果它是每个会话一次的要求,那么实际上有一个 'automatic' 过程。
您需要将所有调用接口例程放入一个包中。除了定义过程和函数之外,包本身还有一个执行部分。加载包时会自动执行此部分。该包在第一次调用其任何函数或过程时加载。
下面显示了所需包的框架。 (仅正文)
create or replace package interface_other_app as
procedure1 ... end procedure1;
procedure1 ... end procedure2;
last_procedure ... end last_procedure;
BEGIN -- package initialization. The code in here runs once when the pacaage is loaded.
other_app.login(application login parameters);
end interface_other_app;
是否有可能在存储过程之前自动执行某些 PL/SQL 代码?像“on-before”之类的东西执行?
按照业务逻辑,每个存储过程都应该只在名为“登录”的一些步骤之后执行。这不是登录数据库而是登录产品,我们无法更改此行为,因为系统是由另一个团队开发的。我们不应该忘记每次都调用“登录”。
是否有任何解决方案可以在 Oracle 中自动执行此类操作?包是否有类似“初始化”的部分?
听起来您正在做的是登录到应用程序,因此实际上需要在该应用程序中调用 LOGIN 过程。 @Del 提出的问题是相关问题。如果答案是在应用程序的每个过程执行之前,那么您需要在调用该应用程序中的另一个过程之前调用该 LOGIN 过程。但是,如果它是每个会话一次的要求,那么实际上有一个 'automatic' 过程。
您需要将所有调用接口例程放入一个包中。除了定义过程和函数之外,包本身还有一个执行部分。加载包时会自动执行此部分。该包在第一次调用其任何函数或过程时加载。
下面显示了所需包的框架。 (仅正文)
create or replace package interface_other_app as
procedure1 ... end procedure1;
procedure1 ... end procedure2;
last_procedure ... end last_procedure;
BEGIN -- package initialization. The code in here runs once when the pacaage is loaded.
other_app.login(application login parameters);
end interface_other_app;