第 33.1 节:PREPARE、EXECUTE 和 DEALLOCATE PREPARE 语句

  • PREPARE 准备一个语句以供执行。
  • EXECUTE 执行一个准备好的语句。
  • DEALLOCATE PREPARE 释放一个准备好的语句。
SET @s = 'SELECT SQRT(POW(?,2) + POW(?,2)) AS hypotenuse';
PREPARE stmt2 FROM @s;
SET @a = 6;
SET @b = 8;
EXECUTE stmt2 USING @a, @b;

结果:

+------------+
| hypotenuse |
+------------+
|         10 |
+------------+

最后:

DEALLOCATE PREPARE stmt2;

注意:

  • 对于 FROM @s,你必须使用 @ 变量,而不能使用 DECLARE 声明的变量。
  • PREPARE 等的主要用途是“构造”一个查询,用于绑定不适用的情况,例如插入表名。

第 33.2 节:使用预处理语句添加列的 ALTER TABLE

SET @v_column_definition := CONCAT(
    @v_column_name,
    ' ', @v_column_type,
    ' ', @v_column_options
);
SET @stmt := CONCAT('ALTER TABLE ADD COLUMN ', @v_column_definition);
PREPARE stmt FROM @stmt;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;