จริงๆ แล้ว 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)