ऐसा करने का एक तरीका है, बशर्ते आप 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>
हम सशर्त संकलन के साथ बहुत कुछ कर सकते हैं। यह डॉक्स में शामिल है। और जानें।