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