PREPARE Statements
PREPARE, EXECUTE and DEALLOCATE PREPARE Statements
Section titled “PREPARE, EXECUTE and DEALLOCATE PREPARE Statements”PREPARE prepares a statement for execution
EXECUTE executes a prepared statement
DEALLOCATE PREPARE releases a prepared statement
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;Result:
+------------+| hypotenuse |+------------+| 10 |+------------+Finally,
DEALLOCATE PREPARE stmt2;Notes:
- You must use @variables, not DECLAREd variables for
FROM @s - A primary use for Prepare, etc, is to ‘construct’ a query for situations where binding will not work, such as inserting the table name.
Alter table with add column
Section titled “Alter table with add column”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;Construct and execute
Section titled “Construct and execute”(This is a request for a good example that shows how to construct a SELECT using CONCAT, then prepare+execute it. Please emphasize the use of @variables versus DECLAREd variables — it makes a big difference, and it is something that novices (include myself) stumble over.)
Syntax
Section titled “Syntax”- PREPARE stmt_name FROM preparable_stmt
- EXECUTE stmt_name [USING @var_name [, @var_name] …]
- {DEALLOCATE | DROP} PREPARE stmt_name