MySQL                
            PREPARE-Anweisungen
        
        
            
    Suche…
Syntax
- PREPARE stmt_name FROM preparable_stmt
 - EXECUTE stmt_name [USING @var_name [, @var_name] ...]
 - {ENALLOCATE | DROP} PREPARE stmt_name
 
PREPARE-Anweisungen, EXECUTE- und DEALLOCATE-Anweisungen
PREPARE bereitet eine Anweisung zur Ausführung vor
EXECUTE führt eine vorbereitete Anweisung aus
DEALLOCATE PREPARE gibt eine vorbereitete Anweisung frei
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;
 Ergebnis:
+------------+
| hypotenuse |
+------------+
|         10 |
+------------+
 Endlich,
DEALLOCATE PREPARE stmt2;
 Anmerkungen:
-  Sie müssen @ -Variablen verwenden, nicht DECLAREd-Variablen für 
FROM @s - Eine Hauptanwendung für Prepare usw. ist das Erstellen einer Abfrage für Situationen, in denen die Bindung nicht funktioniert, z.
 
Konstruieren und ausführen
 (Dies ist eine Anfrage für ein gutes Beispiel , das zeigt , wie ein konstruieren SELECT mit CONCAT , dann bereiten + ausführen Bitte betonen die Verwendung von @variables gegen deklarierten Variablen -. Es macht einen großen Unterschied, und es ist etwas , die Anfänger ( mich selbst) stolpern vorbei.) 
Ändern Sie die Tabelle mit Spalte hinzufügen
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
        Lizenziert unter CC BY-SA 3.0
        Nicht angeschlossen an Stack Overflow