実際には、MySQL はストアド プロシージャが作成された環境を保持します。これは、2 つのバーを使用して文字列を連結する次の例から理解できます。これは、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 はストアド プロシージャが作成された環境を保存しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。