MySQL
PREPAREステートメント
サーチ…
構文
- 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