อันที่จริง 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)