2008-11-19 11 views

उत्तर

11

आप एक पैकेज स्तर चर बनाते हैं।

CREATE OR REPLACE PACKAGE my_package 
AS 
    FUNCTION get_a RETURN NUMBER; 
END my_package; 
/

CREATE OR REPLACE PACKAGE BODY my_package 
AS 
    a NUMBER(20); 

    FUNCTION get_a 
    RETURN NUMBER 
    IS 
    BEGIN 
     RETURN a; 
    END get_a; 
END my_package; 
/

आप पर पढ़ना चाहिए आप ऐसा करते हैं (और सही ढंग से संभाल) ORA-04068 त्रुटियां: यह एक न्यूनतम उदाहरण है। प्रत्येक डेटाबेस सत्र के लिए इसका अपना मूल्य होगा। आप के साथ इस कोशिश कर सकते हैं:

SELECT my_package.get_a FROM DUAL; 
11

आप दुकान डेटा किसी सत्र के दौरान कई इकाइयों के पार साझा करने के लिए एक 'उपयोगकर्ता-निर्मित संदर्भ' का उपयोग कर सकते हैं।

सबसे पहले, एक संदर्भ बनाने के लिए:

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

+0

जब मैं प्रसंग बना यह कहते हैं: ORA-28,265: नाम स्थान 'sys_' के साथ शुरुआत अनुमति नहीं है। मैंने इसे चर में सेट करने का प्रयास किया। लेकिन यह मूल्य के बजाय परिवर्तनीय नाम सेट करता है –

संबंधित मुद्दे