2015-12-17 7 views
34

मैं Oracle में एक स्क्रिप्ट देख रहा हूँ और मैं कुछ देखने में "सेट से परिभाषा" मैंजब या क्यों उपयोग करने के लिए एक Oracle डाटाबेस

REM INSERTING into database1."Users" 
SET DEFINE OFF; 
Insert into database1."Users" ("id","right") values ('1','R'); 

मैं प्रलेखन के लिए देख रहा हूँ के बारे में पहचान नहीं पा रहे "सेट परिभाषित करें "और यह सचमुच लिख रहा है" प्रतिस्थापन चर को उनके मूल्यों के साथ प्रतिस्थापन चर बदलने के लिए आदेशों का विश्लेषण अक्षम करें "

मैं वास्तव में समझ नहीं पा रहा हूं कि वे क्या कहना चाहते हैं।

क्या कोई मेरी मदद कर सकता है?

+1

प्रतिस्थापन चर को संकेत देना बंद कर देता है। इसलिए आपको एक मूल्य डालने के लिए कहा नहीं जाता है जब यह आपके प्रतिस्थापन चर को देखता है, मुझे विश्वास है कि डिफ़ॉल्ट है और। –

+0

यह SQL _client_ के लिए एक सेटिंग है, न कि डेटाबेस स्वयं। और इस प्रकार यह एसक्यूएल * प्लस मैनुअल में प्रलेखित है: http://docs.oracle.com/cd/E11882_01/server.112/e16604/ch_twelve040.htm#SQPUG073 –

उत्तर

58

डिफ़ॉल्ट रूप से, एसक्यूएल प्लस एक विशेष चरित्र के रूप में '&' का व्यवहार करता है जो एक प्रतिस्थापन स्ट्रिंग शुरू करता है। यह समस्या हो सकती है स्क्रिप्ट कि अन्य कारणों के लिए '&' शामिल करने के लिए होता चल रहा है:

SQL> insert into customers (customer_name) values ('Marks & Spencers Ltd'); 
Enter value for spencers: 
old 1: insert into customers (customer_name) values ('Marks & Spencers Ltd') 
new 1: insert into customers (customer_name) values ('Marks Ltd') 

1 row created. 

SQL> select customer_name from customers; 

CUSTOMER_NAME 
------------------------------ 
Marks Ltd 

तुम्हें पता है अपनी स्क्रिप्ट भी शामिल है (या शामिल हो सकते हैं) यदि डेटा '&' अक्षर से युक्त है, और आप प्रतिस्थापन नहीं करना चाहते व्यवहार के रूप में ऊपर है, तो व्यवहार बंद करने की स्क्रिप्ट चलाने जबकि set define off का उपयोग करें:

SQL> set define off 
SQL> insert into customers (customer_name) values ('Marks & Spencers Ltd'); 

1 row created. 

SQL> select customer_name from customers; 

CUSTOMER_NAME 
------------------------------ 
Marks & Spencers Ltd 

आप स्क्रिप्ट के अंत में set define on जोड़ने के लिए डिफ़ॉल्ट व्यवहार को बहाल करने के लिए चाहते हो सकता है।

8

यहाँ उदाहरण है:

SQL> set define off; 
SQL> select * from dual where dummy='&var'; 

no rows selected 

SQL> set define on 
SQL>/
Enter value for var: X 
old 1: select * from dual where dummy='&var' 
new 1: select * from dual where dummy='X' 

D 
- 
X 
set define off साथ

, यह &var मूल्य के साथ एक पंक्ति में ले लिया, इसके लिए कोई मान दर्ज करने के लिए एक उपयोगकर्ता के लिए प्रेरित किया और दर्ज किए गए मान के साथ &var प्रतिस्थापित (इस मामले में, X) ।

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