SQL * प्लस कमांड के अंत में अर्धविराम का क्या महत्व है?


16

कुछ कथन जैसे तालिका बनाना, सम्मिलित करना आदि अंत में एक अर्धविराम लेते हैं:

CREATE TABLE employees_demo
    ( employee_id    NUMBER(6)
    , first_name     VARCHAR2(20)
    , last_name      VARCHAR2(25) 
         CONSTRAINT emp_last_name_nn_demo NOT NULL
    ) ;

जबकि अन्य पसंद करते हैं

set echo on
connect system/manager

अर्धविराम के बिना भी गुजरें।

इसके पीछे क्या कारण है? मैं अपने आप को कैसे तय कर सकता हूं कि अर्धविराम कहां लगाया जाए और कहां नहीं?


6
+1 चीजों को और अधिक भ्रमित करने के लिए, आप इसके बजाय निम्नलिखित लाइन पर / उपयोग कर सकते हैं; कुछ मामलों में।
bernd_k

जवाबों:


15

वापसी पर स्थानीय उदाहरण के लिए निष्पादित। सर्वर पर मल्टी-लाइन कमांड अर्धविराम पर निष्पादित होते हैं

एसक्यूएल * प्लस मैनुअल में विस्तृत विशेष कमांड केवल वही हैं जो अर्ध-कॉलोन को स्वीकार नहीं करते हैं। सर्वर द्वारा पार्स किए जाने के लिए व्हेयर एसक्यूएल कमांड को समाप्त होना चाहिए ;


कमांड के अंत में अर्धविराम Sql सर्वर में OSQL / SQLCMD में निष्पादित कमांड के अंत में GO स्टेटमेंट के समान है। यह संकेत है कि कमांड को पार्स और निष्पादित किया जाएगा।
मरिअन

7

जब आप SQL * प्लस में SQL स्टेटमेंट दर्ज कर रहे होते हैं, तो यह जानना आवश्यक है कि आप इसके साथ कब कर रहे हैं, खासकर यदि कमांड मल्टीपल पंक्तियों को फैलाता है। इसलिए, इसे एक टर्मिनल चरित्र चरित्र की आवश्यकता होती है जिसे इसके साथ सेट किया जा सकता है set sqlterminator। डिफ़ॉल्ट रूप से, यह वर्ण अर्धविराम है:

SQL> select *
  2  from
  3  dual;

D
-
X

अब, इस टर्मिनल वर्ण को बदलकर a #:

SQL> set sqlterminator #
SQL> select *
  2  from
  3  dual#

D
-
X

SQL कथन समाप्त हो गया (अंत में निष्पादित) a के साथ #

आप पूछते हैं: set sqlterminator #अर्धविराम के बाद क्यों नहीं किया गया? उत्तर दें, क्योंकि यह SQL स्टेटमेंट नहीं है। बयान है कि एसक्यूएल * प्लस और अपने व्यवहार, उत्पादन, कनेक्शन asf (जैसे से संबंधित हैं set echo onऔर connect system/manager) SQL कथन नहीं हैं और therfore अर्धविराम के बिना दर्ज की जाती हैं।

इससे क्या लेना-देना है /?

जब आप एक SQL स्टेटमेंट दर्ज करते हैं, तो SQL * प्लस में कुछ भरा होता है जिसे वह बफर कहते हैं। यह बफ़र listकमांड के साथ दिखाया जा सकता है :

SQL> list
  1  select *
  2  from
  3* dual
SQL>

(नोट: मैंने केवल सूची दर्ज की है , बाकी वापस कर दी गई है)

/अब कार्यान्वित क्या बफर में है। चलो कोशिश करते हैं:

SQL> /

D
-
X

जैसा कि देखा जा सकता है, उसी क्वेरी को निष्पादित किया जाता है।


2

अर्धविराम SQL पार्सर के लिए अनुक्रम बिंदु है , जबकि SQL * प्लस के भीतर निष्पादित कमांड वैसे भी तुरंत निष्पादित किए जाते हैं। एक सादृश्य के रूप में, सी प्रोग्राम में अर्धविरामों की तुलना शेल में दर्ज किए गए कमांड्स से करें।


0

जिस तरह से मैं इसे समझता हूं वह यह है कि सामान्य SQL पार्सर सामान्य जावास्क्रिप्ट पार्सर के साथ सामान्य रूप से बहुत कुछ साझा करता है, जिसमें यह प्रत्येक उपयुक्त स्थान के बाद अर्धविराम की तरह होगा, लेकिन कुछ विशेष परिस्थितियों को छोड़कर इसकी आवश्यकता नहीं है। जब मुझे एसक्यूएल लिखना सिखाया गया था, तो मुझे बताया गया कि एक अर्धविराम भाषा का हिस्सा था, न कि एक अतिरिक्त ऑपरेटर जिसे हम अनदेखा कर सकते थे।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.