Computer >> Máy Tính >  >> Lập trình >> MySQL

MySQL có bảo toàn môi trường tại thời điểm thủ tục được lưu trữ được tạo không?

Trên thực tế, MySQL duy trì môi trường tại thời điểm thủ tục được lưu trữ được tạo. Nó có thể được hiểu với sự trợ giúp của ví dụ sau đây chúng ta đang sử dụng hai thanh để nối các chuỗi. Điều này chỉ hợp pháp trong khi chế độ SQL là ansi. Nhưng nếu chúng tôi thay đổi chế độ SQL thành không phải ansi, thì quy trình vẫn hoạt động như thể cài đặt ban đầu vẫn đúng.

Ví dụ

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)

Tập kết quả trên cho thấy rằng ngay cả sau khi thay đổi chế độ SQL thành không ansi, thủ tục Con_string () vẫn tạo ra kết quả tương tự như khi chế độ SQL vẫn là ansi. Nhưng thủ tục mới sẽ không chấp nhận hai thanh vì chúng tôi đã thay đổi chế độ SQL thành không 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)