Zoeken…


Syntaxis

  • PREPARE stmt_name FROM preparable_stmt
  • UITVOEREN stmt_name [GEBRUIK VAN @var_name [, @var_name] ...]
  • {DEALLOCATE | DROP} PREPARE stmt_name

VOORBEREIDEN, UITVOEREN en DEALLOCEREN VOORBEREIDEN

PREPARE bereidt een verklaring voor uitvoering voor

EXECUTE voert een voorbereide verklaring uit

DEALLOCATE PREPARE geeft een voorbereide verklaring vrij

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;

Resultaat:

+------------+
| hypotenuse |
+------------+
|         10 |
+------------+

Tenslotte,

DEALLOCATE PREPARE stmt2;

Opmerkingen:

  • U moet @variables gebruiken, geen DECLAREd-variabelen voor FROM @s
  • Een primair gebruik voor Prepare, enz. Is om een query te 'construeren' voor situaties waarin binden niet werkt, zoals het invoegen van de tabelnaam.

Construeren en uitvoeren

(Dit is een verzoek voor een goed voorbeeld dat laat zien hoe een te bouwen SELECT gebruik CONCAT , dan bereiden + voer het uit Gelieve nadruk leggen op het gebruik van @variables versus verklaarde variabelen -. Het maakt een groot verschil, en het is iets dat beginners ( omvatten mezelf) struikelen over.)

Wijzig tabel met kolom toevoegen

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
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow