准备好的语句和MySQL用户变量之间的相似之处是什么?

众所周知,MySQL用户变量特定于在其中使用它们的客户端连接,并且仅在该连接期间存在。连接结束时,其所有用户变量都将丢失。同样,准备好的语句也仅在创建它的会话期间存在,并且对于创建它的会话可见。会话结束时,将丢弃该会话的所有准备好的语句。

另一个相似之处是,准备好的语句也不像MySQL用户变量那样区分大小写。例如,stmt11和STMT11都与以下示例中的示例相同-

mysql> Select * from student;
+------+-------+
| Id   | Name  |
+------+-------+
| 1    | Ram   |
| 2    | Shyam |
| 3    | Rohan |
+------+-------+
3 rows in set (0.00 sec)

mysql> SET @A = 'Sohan', @B = 3;

mysql> EXECUTE Stmt11 USING @A, @B;

mysql> Select * from Student;
+------+-------+
| Id   | Name  |
+------+-------+
| 1    | Ram   |
| 2    | Shyam |
| 3    | Sohan |
+------+-------+
3 rows in set (0.00 sec)

mysql> SET @A = 'Gaurav', @B = 3;

mysql> EXECUTE STMT11 USING @A, @B;

mysql> Select * from Student;
+------+--------+
| Id   | Name   |
+------+--------+
| 1    | Ram    |
| 2    | Shyam  |
| 3    | Gaurav |
+------+--------+
3 rows in set (0.00 sec)

在上面的示例中,一旦我们执行了stmt11,下一次我们执行了STMT11,由于准备好的语句不区分大小写,所以它们都工作相同。

猜你喜欢