Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

MySQL รักษาสภาพแวดล้อมไว้ตอนที่ Stored Procedure ถูกสร้างหรือไม่


จริงๆ แล้ว MySQL รักษาสภาพแวดล้อมไว้ตอนที่ Stored Procedure ถูกสร้าง สามารถเข้าใจได้จากตัวอย่างต่อไปนี้ ซึ่งเราใช้สองแท่งสำหรับการต่อสตริง นี่ถูกต้องกฎก็ต่อเมื่อโหมด SQL เป็น ansi แต่ถ้าเราเปลี่ยนโหมด SQL เป็น non-ansi Procedure ยังคงทำงานเหมือนการตั้งค่าเดิมยังคงเป็นจริง

ตัวอย่าง

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 เป็น non-ansi แล้ว Procedure Con_string() ก็ยังคงสร้างผลลัพธ์เหมือนเดิมเหมือนโหมด SQL ยังคงเป็น ansi แต่ Procedure ใหม่จะไม่ยอมรับสองแท่งเพราะเราเปลี่ยนโหมด SQL เป็น non-ansi

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)