How to send arbitrary parameters to Oracle trigger?

前端 未结 3 1169
一个人的身影
一个人的身影 2020-12-14 10:51

The purpose is to send extra information to triggers like current user id from a web application. Since a connection pool is used, and same user id is used for all connectio

3条回答
  •  南方客
    南方客 (楼主)
    2020-12-14 11:35

    you could use Oracle Contexts:

    SQL> CREATE OR REPLACE PACKAGE test_pkg AS
      2     PROCEDURE set_context(p_attribute VARCHAR2, p_value VARCHAR2);
      3  END test_pkg;
      4  /
    
    Package created
    SQL> CREATE OR REPLACE PACKAGE BODY test_pkg AS
      2     PROCEDURE set_context(p_attribute VARCHAR2, p_value VARCHAR2) IS
      3     BEGIN
      4        dbms_session.set_context('test_ctx', p_attribute, p_value);
      5     END;
      6  END test_pkg;
      7  /
    
    Package body created
    
    SQL> create context test_ctx using test_pkg;
    
    Context created
    
    SQL> exec test_pkg.set_context ('user_id', 'Vincent');
    
    PL/SQL procedure successfully completed
    
    SQL> select sys_context('test_ctx', 'user_id') from dual;
    
    SYS_CONTEXT('TEST_CTX','USER_I
    --------------------------------------------------------------------------------
    Vincent
    

提交回复
热议问题