SQL टाइप करने के बाद SQL * PLUS को स्लैश की आवश्यकता क्यों है?


14

मुझे सिर्फ यह समस्या थी कि मैंने एक प्रकार को परिभाषित किया और इसे TOAD में परीक्षण किया और सब ठीक था। लेकिन SQL * PLUS के तहत चलने पर यह एक त्रुटि थी।

उदाहरण:

CREATE OR REPLACE TYPE MyType AS OBJECT (
    Item1 NUMBER,
    Item2 NUMBER
);

किसी कारण से मुझे यहां एक स्लैश जोड़ना होगा

CREATE OR REPLACE TYPE MyType AS OBJECT (
    Item1 NUMBER,
    Item2 NUMBER
);
/

मेरे लिए यह एक टेबल टेबल स्टेटमेंट के समान है, जिसमें स्लैश की आवश्यकता नहीं है। मुझे यह भ्रामक लगता है। मुझे पता है कि यह कैसे काम करता है, लेकिन क्या कोई समझा सकता है कि यह डिजाइन निर्णय क्यों किया गया था?


उत्तर दिया गया: dba.stackexchange.com/questions/1305/…
जो

2
कोई सवाल नहीं क्यों वहाँ जवाब नहीं है। यह एसक्यूएल * प्लस टीम का एक मनमाना डिजाइन निर्णय लगता है।
bernd_k

एक महान जवाब है: stackoverflow.com/a/10207695/1568658
एरिक वांग

जवाबों:


15

/SQL * प्लस में PL / SQL ब्लॉक के बाद आपको जरूरत है :

SQL> begin
  2     null;
  3  end;
  4  -- here you need a /
  5  /

PL/SQL procedure successfully completed

यह इतना एसक्यूएल * प्लस जानता है कि आप अपने बयान (जिसमें मध्यवर्ती, गैर-समाप्ति शामिल हो सकते हैं ;) के साथ किया जाता है।

SQL प्रकारों में PL / SQL कोड शामिल हो सकते हैं, इसलिए SQL * Plus devs ने निर्णय लिया कि आपको /सभी मामलों में CREATE TYPE के बाद:

SQL> CREATE OR REPLACE TYPE t AS OBJECT (
  2     x NUMBER,
  3     MEMBER PROCEDURE setx(p_x NUMBER)
  4  );
  5  /

Type created

SQL> CREATE OR REPLACE TYPE BODY t AS
  2     MEMBER PROCEDURE setx (p_x NUMBER) IS
  3     BEGIN
  4        x := p_x;
  5     END;
  6  END;
  7  /

Type body created

नोट : आपको /एक प्रक्रिया, एक पैकेज या पैकेज बॉडी (उसी कारण के लिए) को परिभाषित करने के बाद भी आपकी आवश्यकता है ।

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