oracle – PL / SQL:如何声明会话变量?
发布时间:2020-12-12 13:05:20 所属栏目:百科 来源:网络整理
导读:如何在PL / SQL中声明一个会话变量 – 只会在会话期间持续一个会话变量,而不必将它存储在数据库本身中? 您可以使用“用户创建的上下文”来存储会话中多个单元共享的数据. 首先,创建一个上下文: CREATE CONTEXT SYS_CONTEXT ('userenv','current_schema')||
如何在PL / SQL中声明一个会话变量 – 只会在会话期间持续一个会话变量,而不必将它存储在数据库本身中?
您可以使用“用户创建的上下文”来存储会话中多个单元共享的数据.
首先,创建一个上下文: CREATE CONTEXT SYS_CONTEXT ('userenv','current_schema')|| '_ctx' USING PKG_COMMON 其次,创建一个可以管理您的上下文的包: CREATE OR REPLACE PACKAGE PKG_COMMON IS common_ctx_name CONSTANT VARCHAR2 (60) := SYS_CONTEXT ('userenv','current_schema') || '_ctx'; FUNCTION fcn_get_context_name RETURN VARCHAR2; PROCEDURE prc_set_context_value (var_name VARCHAR2,var_value NUMBER); END; CREATE OR REPLACE PACKAGE BODY PKG_COMMON IS FUNCTION fcn_get_context_name RETURN VARCHAR2 IS BEGIN RETURN common_ctx_name; END; PROCEDURE prc_set_context_value (var_name VARCHAR2,var_value NUMBER) IS BEGIN DBMS_SESSION.set_context (common_ctx_name,var_name,var_value); END; END; prc_set_context_value可以更高级,这只是一个例子. begin PKG_COMMON.prc_set_context_value('MyVariable',9000) end; 并在任何地方使用任何程序,包,功能或事件视图. CREATE VIEW V_TEST AS SELECT ID,LOGIN,NAME FROM USERS WHERE ROLE_ID = SYS_CONTEXT(PKG_COMMON.FCN_GET_CONTEXT_NAME,'MyVariable') 有关更多信息,请参阅http://www.psoug.org/reference/sys_context.html (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |