पारित नहीं वहाँ उपयोगकर्ता इनपुट के बिना sqlplus लिपि में पैरामीटर का डिफ़ॉल्ट मान सेट करने के लिए कोई तरीका है?डिफ़ॉल्ट मूल्य sqlplus स्क्रिप्ट
उदाहरण के लिए, मैं एक SQL स्क्रिप्ट sessions.sql है:
SET VERIFY OFF SET TERMOUT OFF DEFINE uname = '&1' COLUMN search_uname new_value search_uname SELECT CASE WHEN '&uname' = '' THEN '%' ELSE UPPER('&uname') END AS search_uname FROM dual; SET TERMOUT ON SELECT sid, serial, username FROM v$session WHERE username LIKE '&search_uname';
और मैं इस तरह sqlplus से यह आह्वान करने के लिए करना चाहते हैं:
SQL> @sessions Enter value for 1: SID SERIAL# USERNAME ---------- ---------- ------------------------------ 56 20577 CONTEXT ..... 236 rows selected. SQL> @sessions "" SID SERIAL# USERNAME ---------- ---------- ------------------------------ 56 20577 CONTEXT ..... 236 rows selected. SQL> @sessions SDE SID SERIAL# USERNAME ---------- ---------- ------------------------------ 113 56675 SDE 165 64881 SDE ..... 43 rows selected. SQL>
मैं केवल पैरामीटर के लिए एक खाली मूल्य पारित कर सकते हैं जब मुझे इसे दर्ज करने के लिए कहा जाता है, या मैं स्क्रिप्ट नाम के बाद खाली पैरामीटर पास करने में सक्षम हूं। लेकिन यह व्यवहार बहुत परेशान है। यदि परिभाषित के कुछ प्रकार "& 1" बहुत उपयोगी हो जाएगा।
आप किसी भी सुझाव या चाल यह कैसे लागू करने के लिए कहां sqlplus स्क्रिप्ट wheter पैरामीटर में स्थिति या परिभाषित किया गया है अनावश्यक उपयोगकर्ता सहभागिता के बिना नहीं हासिल किया जाना चाहिए है?
समाधान
लेख मार्टिन से जुड़े हुए के अनुसार मैं संशोधित पिछले स्क्रिप्ट पैरामीटर मान के लिए aksing बिना काम करने:
SET VERIFY OFF SET TERMOUT OFF column 1 new_value 1 SELECT '' "1" FROM dual WHERE ROWNUM = 0; define uname = '&1' SET TERMOUT ON SELECT sid, serial#, username FROM v$session WHERE username LIKE UPPER(DECODE('&uname', '', '%', '&uname')); undefine 1
मुझे एक महान लेख को इंगित करने के लिए बहुत बहुत धन्यवाद। – adrive