MySQL
PREPARE Déclarations
Recherche…
Syntaxe
- PREPARE stmt_name FROM preparable_stmt
- EXECUTE nom_stmt [USING @var_name [, @var_name] ...]
- {DEALLOCATE | DROP} PREPARE stmt_name
PREPARE, EXECUTE et DEALLOCATE PREPARE Déclarations
PREPARE prépare une déclaration pour exécution
EXECUTE exécute une déclaration préparée
DEALLOCATE PREPARE publie une déclaration préparée
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;
Résultat:
+------------+
| hypotenuse |
+------------+
| 10 |
+------------+
Finalement,
DEALLOCATE PREPARE stmt2;
Remarques:
- Vous devez utiliser @variables, pas les variables DECLAREd pour
FROM @s
- Une utilisation principale de Prepare, etc. consiste à "construire" une requête pour les situations où la liaison ne fonctionnera pas, comme l'insertion du nom de la table.
Construire et exécuter
(Ceci est une demande pour un bon exemple qui montre comment construire un SELECT
utilisant CONCAT
, puis préparer + exécuter. S'il vous plaît insister sur l'utilisation de @variables contre les variables DECLAREd - cela fait une grande différence, et c'est quelque chose que les novices ( inclure moi-même) trébucher.)
Alter table avec 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;
Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow