# 准备阶段
+ 使用 PREPARE 创建 prepared statement:
  + `PREPARE statement_name FROM statement;`
  + statement_name 是一个标识符,您可以稍后引用该语句,它不区分大小写
  + statement 可以是字符串字面值,也可以是包含 SQL 语句文本的用户变量
    + 使用 `?` 字符作为参数标记,以表示执行语句时数据值将绑定到该语句的位置
    + 仅使用参数标记来表示数据值,不能使用 SQL 关键字、表名或列名等
    + 不要将参数标记用引号引起来,即使您期望的是字符串值也是如此
+ Prepared statement 仅存在于创建该语句的会话中
--------------------------------------------------------------
您可以准备一份完整的陈述或一份不完整的陈述。完整语句包含执行该语句所需的所有 SQL 代码和值。不完整语句包含准备时未知数据值的占位符。这些占位符用问号 "？" 表示字符。执行语句时,必须为语句中的每个参数提供一个特定的数据值。服务器会将标记替换为您提供的数据值以完成语句。每次执行语句时都可以使用不同的值。

如果您尝试准备与已存在的语句同名的语句,TiDB 会在准备新语句之前解分配当前语句。如果由于任何原因无法准备新语句,TiDB 会引发错误,并且不会重新创建之前的语句。

预准备语句的存在时间仅与创建它的会话一样长,其他客户端连接不可用。如果会话因任何原因而结束,则会自动释放其准备好的语句。

