MySQL
VOORBEREIDINGEN
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