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

क्या परीक्षण उद्देश्यों के लिए निजी plsql प्रक्रियाओं तक पहुंचने का कोई तरीका है?

ऐसा करने का एक तरीका है, बशर्ते आप 10g या इससे अधिक पर हों। इसे सशर्त संकलन कहा जाता है। यह एक बेहद साफ-सुथरी विशेषता है जो विशेष सिंटैक्स प्रदान करती है ताकि हम संकलन समय पर अपना पीएल/एसक्यूएल कोड बदल सकें।

जैसा कि होता है, मैं इस सुविधा का उपयोग निजी पैकेजों को एक विशिष्ट रूप में उजागर करने के लिए कर रहा हूं ताकि मैं उनके खिलाफ यूटीपीएलएसक्यूएल परीक्षण चला सकूं।

यहाँ विशेष वाक्य रचना है:

create or replace package my_pkg
as

    $IF $$dev_env_test $THEN

    PROCEDURE private_proc;

    $END

    FUNCTION public_function return date;

end my_pkg;
/

डबल-डॉलर चिह्न वाला वह चर एक सशर्त संकलन ध्वज है।

अगर मैं पैकेज का वर्णन करता हूं तो हम केवल सार्वजनिक पैकेज देख सकते हैं:

SQL> desc my_pkg
FUNCTION PUBLIC_FUNCTION RETURNS DATE

SQL>

अब मैं सशर्त ध्वज सेट करता हूं और पैकेज को फिर से संकलित करता हूं, और मानो जादू से ...

SQL> alter session set plsql_ccflags='dev_env_test:true'
  2  /

Session altered.

SQL> alter package my_pkg compile
  2  /

Package altered.

SQL> desc my_pkg
PROCEDURE PRIVATE_PROC
FUNCTION PUBLIC_FUNCTION RETURNS DATE

SQL>

कार्यों का निजीकरण करना उतना ही सरल है जितना आपको लगता है कि यह होगा:

SQL> alter session set plsql_ccflags='dev_env_test:false'
  2  /

Session altered.

SQL> alter package my_pkg compile
  2  /

Package altered.

SQL> desc my_pkg
FUNCTION PUBLIC_FUNCTION RETURNS DATE

SQL>

हम सशर्त संकलन के साथ बहुत कुछ कर सकते हैं। यह डॉक्स में शामिल है। और जानें।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ओरेकल में टैन () फ़ंक्शन

  2. oracle बहुत अधिक समय लेने वाली क्वेरी को हटाता है

  3. मैं Oracle/PLSQL में केवल NULL मान कैसे गिन सकता हूँ?

  4. INSERT प्रदर्शन - बिटमैप बनाम बी-ट्री

  5. 1985-02-07T00:00:00.000Z (ISO8601) को Oracle में दिनांक मान में कैसे बदलें?