मैं एक SQL स्क्रिप्ट निष्पादित कर रहा हूं जिसमें prod_desc नामक कॉलम में रिक्त स्थान, अर्धविराम, एकल-उद्धरण, विशेष वर्ण इत्यादि हैं। मुझे SQLPLUS से स्क्रिप्ट निष्पादित करने की आवश्यकता है। मैंने SQLPLUS में निम्नलिखित सेट किया है, हालांकि, सिंगल कोट्स, अर्धविराम को ध्यान में नहीं रखा जाता है।

set sqlblanklines on

उदाहरण के लिए नीचे दिए गए इंसर्ट स्टेटमेंट को देखें, लाइन ब्रेक के बाद अर्धविराम है। यह निष्पादन के दौरान त्रुटि उत्पन्न कर रहा है। मैं इस मुद्दे को कैसे हल कर सकता हूं?

SET DEFINE OFF;
Insert into PROD_DESC
   (PROD_NO, PROD_DESC
    )
Values
   ('XYZ', 'test
semicolon test;
'
);

टेबल संरचना

CREATE TABLE prod_desc
(
   prod_no     VARCHAR2 (100),
   prod_desc   VARCHAR2 (1000)
);
6
Jacob 7 मार्च 2017, 10:54
आपको स्पेशल कैरेक्टर से बचना है
 – 
Jens
7 मार्च 2017, 10:56
मैं उसको कैसे करू?
 – 
Jacob
7 मार्च 2017, 10:58
 – 
Jens
7 मार्च 2017, 11:00

2 जवाब

सबसे बढ़िया उत्तर

अर्धविराम को खाली करें:

SET DEF OFF;
Insert into PROD_DESC(PROD_NO, PROD_DESC)
Values('XYZ', 'test semicolon test\;');
3
Gnqz 27 मई 2021, 14:59
एसक्लप्लस में सेट करने का कोई तरीका है जैसे सेट परिभाषित करें :?
 – 
Jacob
7 मार्च 2017, 11:02
इसका कारण यह है कि मेरे पास एक विशाल SQL फ़ाइल है जिसमें कई मामले हैं जो मैंने प्रश्न में दिखाए हैं।
 – 
Jacob
7 मार्च 2017, 11:04
एस्केप कैरेक्टर सेट करने के लिए या केवल एक निर्देश के साथ सभी पात्रों से बचने के लिए?
 – 
Gnqz
7 मार्च 2017, 11:05
दोनों उदाहरण अत्यधिक सहायक होंगे। धन्यवाद
 – 
Jacob
7 मार्च 2017, 11:05
1
आप एस्केप कैरेक्टर सेट करने के लिए "सेट एस्केप '\'" का उपयोग कर सकते हैं; हालांकि, मुझे यकीन नहीं है कि आप केवल एक निर्देश के साथ सभी पात्रों से बच सकते हैं (कम से कम मुझे कोई रास्ता नहीं पता)।
 – 
Gnqz
7 मार्च 2017, 11:09

मुझे क्यू-कोट सिंटैक्स का उपयोग करना भी पसंद है। यह भागने की आवश्यकता को दूर करता है, और उद्धरणों को उद्धृत करना बहुत आसान बनाता है।

वाक्य रचना है

q'[ <your string> ]'

<Your string> में उद्धरण या कोई अन्य वर्ण हो सकते हैं जिनसे सामान्य रूप से बचने की आवश्यकता होती है। [ को वास्तव में या "युग्मित" वर्णों के लिए प्रतिस्थापित किया जा सकता है, जैसे {} या ()।

उदाहरण के लिए:

SQL> 
SQL> CREATE TABLE prod_desc
  2  (
  3     prod_no     VARCHAR2 (10),
  4     prod_desc   VARCHAR2 (100)
  5  );

Table created.

SQL> 
SQL> SET DEFINE OFF;
SQL> Insert into PROD_DESC
  2     (PROD_NO, PROD_DESC
  3      )
  4  Values
  5     ('XYZ', q'[test
  6  semicolon test
  7  ; ]'
  8  );

1 row created.

SQL> 
SQL> 
SQL> select * from prod_desc;

PROD_NO    PROD_DESC
---------- ----------------------------------------------------------------------------------------------------
XYZ        test
           semicolon test
           ;
3
BobC 9 मार्च 2017, 06:43