サーチ…


構文

  • PREPARE stmt_name FROM preparable_stmt
  • EXECUTE stmt_name [USING @var_name [、@var_name] ...]
  • {DEALLOCATE | DROP} PREPARE stmt_name

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;

ノート:

  • @variablesを使用する必要があります。FROM @sのDECLARE変数は使用しないでFROM @s
  • Prepareなどの主な用途は、テーブル名の挿入など、バインディングが機能しない状況のクエリを「構築する」ことです。

構築と実行

(これは、 構築する方法を示して良い例の要求であるSELECT使用してCONCAT 、それを実行+準備宣言した変数対@variablesの使用を強調してください- 。それは大きな違いになり、そしてそれは初心者(何かであります自分自身を含む)が遭遇する。)

列を追加してテーブルを変更する

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;


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow