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)
广告
数据结构
网络
关系型数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP