实际上,MySQL 会保留创建存储过程时的环境。可以通过以下示例来理解,在该示例中我们使用两个条来连接字符串。这仅在 SQL 模式为 ansi 时才合法。但是,如果我们将 SQL 模式更改为非 ansi,该过程仍然有效,就好像原始设置仍然为 true 一样。
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 模式更改为非 ansi 后,过程 Con_string() 仍会生成与 SQL 模式仍然是 ansi 相同的结果。但是新程序将不接受两个条,因为我们已将 SQL 模式更改为非 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)
以上就是MySQL 是否保留存储过程创建时的环境?的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号