Tatsächlich behält MySQL die Umgebung bei, als die gespeicherte Prozedur erstellt wurde. Dies kann anhand des folgenden Beispiels verstanden werden, in dem wir zwei Balken verwenden, um Zeichenfolgen zu verketten. Dies ist nur zulässig, wenn der SQL-Modus Ansi ist. Wenn wir jedoch den SQL-Modus auf „Nicht-ANSI“ ändern, funktioniert der Vorgang immer noch so, als ob die ursprüngliche Einstellung noch wahr wäre.
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)
Der obige Ergebnissatz zeigt, dass die Prozedur Con_string() auch nach dem Ändern des SQL-Modus in Nicht-ANSI immer noch die gleichen Ergebnisse liefert, als ob der SQL-Modus immer noch AnSI wäre. Das neue Programm akzeptiert jedoch nicht beide Balken, da wir den SQL-Modus auf Nicht-ANSI geändert haben.
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)
Das obige ist der detaillierte Inhalt vonBewahrt MySQL die Umgebung, in der gespeicherte Prozeduren erstellt werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!