我希望是一个快速的
我正在努力将应用程序从oracle移植到本身不支持SYS_CONTEXT概念的另一个DB,因此希望通过函数/ SP,表等来实现自己的功能以镜像功能(设置/获取名称)值对)。我不是Oracle专家,我需要知道SYS_CONTEXT的工作方式是否特别吗?
答案 0 :(得分:0)
关于用户定义的上下文,要记住的一件事是它们可以被保护,以便只能由某个PL / SQL程序包进行修改。
以这个例子为例:
CREATE OR REPLACE PACKAGE my_context_pkg AS
PROCEDURE set_context_a ( p_value VARCHAR2 );
END;
CREATE OR REPLACE PACKAGE BODY my_context_pkg AS
PROCEDURE set_context_a ( p_value VARCHAR2 ) IS
BEGIN
DBMS_SESSION.SET_CONTEXT('MY_CONTEXT','A',p_value);
END;
END;
-- Tell Oracle that only my_context_pkg can modify context
CREATE CONTEXT my_context USING my_context_pkg;
-- This will fail
EXEC DBMS_SESSION.SET_CONTEXT('MY_CONTEXT','A','5');
-- This will succeed
EXEC my_context_pkg.set_context_a ('5');