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

MySQL รักษาสภาพแวดล้อมในขณะที่สร้างกระบวนงานที่เก็บไว้หรือไม่?


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

ตัวอย่าง

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