Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> MySql

क्या MySQL संग्रहीत प्रक्रिया के समय पर्यावरण को संरक्षित करता है?

<घंटा/>

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

उदाहरण

mysql> Set sql_mode = 'ansi'//
Query OK, 0 rows affected, 1 warning (0.14 sec)

mysql> Create Procedure Con_string()
    -> SELECT 'a'||'b'//
Query OK, 0 rows affected (0.12 sec)
mysql> Call Con_string ();
+----------+
| 'a'||'b' |
+----------+
| ab       |
+----------+
1 row in set (0.05 sec)

Query OK, 0 rows affected (0.05 sec)

mysql> Set sql_mode = '';
Query OK, 0 rows affected (0.00 sec)

mysql> Call Con_string();
+----------+
| 'a'||'b' |
+----------+
| ab       |
+----------+
1 row in set (0.00 sec)
Query OK, 0 rows affected (0.00 sec)

उपरोक्त परिणाम सेट से पता चलता है कि SQL मोड को गैर-एएनएसआई में बदलने के बाद भी प्रक्रिया Con_string() उसी परिणाम का उत्पादन कर रही है जैसे कि SQL मोड अभी भी ansi है। लेकिन नई प्रक्रिया दो बार स्वीकार नहीं करेगी क्योंकि हमने SQL मोड को गैर-एएनएसआई में बदल दिया है।

mysql> create procedure Con_string1()
    -> Select 'a'||'b'//
Query OK, 0 rows affected (0.02 sec)

mysql> Call Con_string1()//
+----------+
| 'a'||'b' |
+----------+
|        0 |
+----------+
1 row in set (0.00 sec)

Query OK, 0 rows affected, 2 warnings (0.00 sec)

  1. MySQL संग्रहीत कार्यविधि में "@" प्रतीक का उपयोग क्या है?

    संग्रहीत प्रक्रिया में @ प्रतीक का उपयोग उपयोगकर्ता द्वारा परिभाषित सत्र चर के लिए किया जा सकता है। आइए पहले एक टेबल बनाएं - टेबल बनाएं DemoTable(StudentName varchar(50));क्वेरी ठीक है, 0 पंक्तियाँ प्रभावित (1.30 सेकंड) इंसर्ट कमांड का उपयोग करके टेबल में कुछ रिकॉर्ड डालें - डेमोटेबल मानों में डा

  1. एक MySQL संग्रहीत कार्यविधि में शर्तें सेट करें

    किसी संग्रहीत कार्यविधि में शर्तें सेट करने के लिए, MySQL में IF...ELSE का उपयोग करें। if-else के लिए सिंटैक्स निम्नलिखित है - यदि आपकी स्थिति है तो आपका स्टेटमेंट1, ईएलएसई योरस्टेटमेंट2, अगर समाप्त करें; आइए हम उपरोक्त सिंटैक्स को एक संग्रहीत कार्यविधि में लागू करें - // क्वेरी ठीक है, 0 पंक्तिया

  1. क्या *.* पर अनुदान MySQL में अनुदान के बाद बनाए गए डेटाबेस पर लागू होता है?

    हां, चूंकि यह एक वैश्विक विशेषाधिकार है। आइए पहले एक उपयोगकर्ता बनाएं - Jace123 द्वारा पहचाने गए उपयोगकर्ता Jace@localhost बनाएं;क्वेरी ठीक है, 0 पंक्तियाँ प्रभावित (0.67 सेकंड) *.*: . के साथ वैश्विक विशेषाधिकार प्रदान करने की क्वेरी यहां दी गई है *.* को Jace@localhost पर ग्रांट सेलेक्ट करें;क्वे