Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

पैकेज के भीतर वर्तमान में निष्पादन प्रक्रिया का नाम

12c में, वर्तमान उपप्रोग्राम नाम बस है:

utl_call_stack.subprogram(1)(2);

वर्तमान पैकेज यहां से भी प्राप्त किया जा सकता है

utl_call_stack.subprogram(1)(1);

लेकिन आमतौर पर केवल $$plsql_unit . का उपयोग करना आसान होता है . आप योग्य नाम भी प्राप्त कर सकते हैं (package.procedure ) के रूप में:

utl_call_stack.concatenate_subprogram(utl_call_stack.subprogram(1));

हालांकि , मैं ऐसी किसी भी स्थिति के बारे में नहीं सोच सकता जहां कोई प्रक्रिया या कार्य (या ऑब्जेक्ट विधि) अपना नाम चाहेगा। यह कार्यक्षमता ज्यादातर लॉगिंग प्रक्रिया में उपयोगी होती है, जिस स्थिति में 'मुझे किसने बुलाया?' कोड लॉगर में होना चाहिए, और इसे कॉल करने वाली प्रत्येक चीज़ में दोहराया नहीं जाना चाहिए। इसलिए, मैं दृढ़ता से सुझाव दूंगा कि 'मैं कौन हूं?' प्रक्रियाओं में तर्क। इसके बजाय, अपने लकड़हारे में कुछ इस तरह डालें (12.1 या बाद के संस्करण की आवश्यकता है):

create or replace procedure logdemo
as
    k_calling_package constant varchar2(128) := utl_call_stack.subprogram(2)(1);
    k_calling_subprog constant varchar2(128) := utl_call_stack.subprogram(2)(2);
begin
    dbms_output.put_line
    ( $$plsql_unit ||
      ' called from package '||k_calling_package||', subprogram '||k_calling_subprog );
end logdemo;

दुर्भाग्य से यह 11g में थोड़ा अधिक जटिल है क्योंकि आपको dbms_utility.format_call_stack को पार्स करना होगा। , और चूंकि यह आपको केवल पैकेज का नाम और लाइन नंबर देता है (लाइनफीड-सीमांकित टेक्स्ट स्ट्रिंग में), फिर आपको all_source से पूछताछ करनी होगी उपप्रोग्राम नाम खोजने के लिए।

मैं कुछ 11g कोड पोस्ट कर सकता हूं यदि आप स्पष्ट करते हैं कि यह किस लिए है। अपने 11g लकड़हारे में मैंने dbms_utility.format_error_backtrace को कैप्चर करना उपयोगी पाया साथ ही dbms_utility.format_call_stack sqlcode . के आधार पर आदि, इसलिए तर्क का एक समूह है जो लॉगिंग के लिए विशिष्ट है, जिसकी आपको आवश्यकता नहीं हो सकती है यदि आप किसी अन्य कारण से वर्तमान प्रक्रिया नाम को कैप्चर करना चाहते हैं।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL क्वेरी 00904. 00000 - %s:अमान्य पहचानकर्ता

  2. Oracle SQL:SQL क्वेरी 4 गुना परिणाम देती है और डेटा सही ढंग से ऑर्डर नहीं करता है

  3. मुझे ऑरैकल 12c . में ब्लॉब कॉलम में छवि आकार बदलने में समस्या है

  4. Oracle के लिए संपूर्ण स्कीमा के सभी क्षेत्रों में दिए गए स्ट्रिंग की खोज करें

  5. विजुअल स्टूडियो-एएसपी.नेट में संदर्भ को बदलने में समस्या