Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Variablen als SQL Query in MySQL

Frage Entwicklung Datenbanken

Mitglied: core-moran

core-moran (Level 1) - Jetzt verbinden

31.01.2011, aktualisiert 14:48 Uhr, 3401 Aufrufe, 1 Kommentar

Nutzung des Inhaltes einer Variable als Teil eines Querys in MySQL.

Hallo,

ich möchte in MySQL eine Funktion erstellen, mit deren Hilfe ich Elemente zu einer Tabelle hinzufügen kann.
Das funktioniert sehr gut, ist nur futchtbar langsam bei vielen Elementen.

Deswegen hab ich mir überlegt, einen Puffer zu erzeugen (Session Variable) und diesen dann in einem Rutsch und in
einem Query hinzuzufügen, da das Ganze mindestens um den Faktor 1000 schneller ist.

Folgende 2 Funktionen habe ich hierfür implementiert.

1. Ein Element mit 2 Werten dem Puffer (einem String in dem ein Tel des finalen Queries aufgebaut wird) hinzufügen
2. Den Puffer als Query ausführen

Leider scheint MySQL die Session-Variable in der Flush-Funktion nicht korrekt auszuwerten.
Weiß jemand wie ich MySQL überreden kann, den Inhalt der Variable @elemenT_BUFFER als Teil des Querys zu interpretieren?

Der Fehlercode ist, dass die Anzahl der einzufügenden Spalten nicht mit den ausgewählten übereinstimmt.

Vielen Dank,
Eric


01.
CREATE PROCEDURE `add_element_to_buffer`( 
02.
     ELEMENT_VALUE_1 INT, 
03.
     ELEMENT_VALUE_2 INT) 
04.
BEGIN 
05.
    -- add needed commas to separate the elements in the string 
06.
    IF @ELEMENT_BUFFER <> "" THEN 
07.
        SET @ELEMENT_BUFFER = CONCAT_WS("", @ELEMENT_BUFFER, ", "); 
08.
    END IF; 
09.
     
10.
    -- add element to the buffer string  
11.
    -- in the format: "(value_1, value_2)" 
12.
    SET @ELEMENT_BUFFER = CONCAT_WS("", @ELEMENT_BUFFER, "(",  
13.
                                        ELEMENT_VALUE_1, ",", 
14.
                                        ELEMENT_VALUE_2, ")" ); 
15.
     
16.
END 
17.
$$ 
18.
 
19.
 
20.
CREATE PROCEDURE `flush_element_buffer`() 
21.
BEGIN 
22.
    -- add the elements from the buffer 
23.
     
24.
    INSERT INTO `elemt_element` ( 
25.
        `elemt_value_1`, 
26.
        `elemt_value_2`) 
27.
    VALUES ( 
28.
        @ELEMENT_BUFFER     -- <=== Hier ist das Problem 
29.
    ); 
30.
     
31.
    -- clear the buffer 
32.
    SET @ELEMENT_BUFFER = ""; 
33.
     
34.
END 
35.
$$ 
36.
 
Mitglied: core-moran
31.01.2011 um 15:27 Uhr
Hallo,

mit einer Änderung in der Flush Funktion funktioniert es:

01.
CREATE PROCEDURE `flush_element_buffer`() 
02.
BEGIN 
03.
       
04.
    set @qry = CONCAT('INSERT INTO `elemt_element` ', 
05.
                      '(`elemt_value_1`, `elemt_value_2`) ', 
06.
                      'VALUES ', 
07.
                      @ELEMENT_BUFFER, ';'); 
08.
 
09.
    -- prepare the statement 
10.
    PREPARE myStatement FROM @qry; 
11.
     
12.
    -- execute statement 
13.
    EXECUTE myStatement; 
14.
     
15.
    -- clear the buffer 
16.
    SET @ELEMENT_BUFFER = ''; 
17.
     
18.
END 
19.
 
Bitte warten ..
Ähnliche Inhalte
Basic
VBA Access Variable an Query Kriteria weitergeben (1)

Frage von Everest zum Thema Basic ...

Datenbanken
gelöst SQL-Statement in Excel .dqy Query - (Zeitrahmen) funktioniert nicht ? (6)

Frage von Schelinho zum Thema Datenbanken ...

PHP
gelöst MySQL Update eines Datensatz mit Variable (4)

Frage von Jens4ever zum Thema PHP ...

Datenbanken
MySQL bearbeiten - Rechte auf User ändern (6)

Frage von istike2 zum Thema Datenbanken ...

Neue Wissensbeiträge
Windows Update

Novemberpatches und Nadeldrucker bereiten Kopfschmerzen

(15)

Tipp von MettGurke zum Thema Windows Update ...

Windows 10

Abhilfe für Abstürze von CDPUsersvc auf Win10 1607 und 2016 1607

(7)

Tipp von DerWoWusste zum Thema Windows 10 ...

RedHat, CentOS, Fedora

Fedora 27 ist verfügbar

Information von Frank zum Thema RedHat, CentOS, Fedora ...

Heiß diskutierte Inhalte
Router & Routing
Freigabe aus anderem Netz nicht erreichbar (21)

Frage von McLion zum Thema Router & Routing ...

Windows Server
Kennwort vergessen bei Hyper vserver 2012r (20)

Frage von jensgebken zum Thema Windows Server ...

Batch & Shell
Batch Programm verhalten bei shoutdown -p (19)

Frage von Michael-ITler zum Thema Batch & Shell ...

Festplatten, SSD, Raid
Raidcontroller funktioniert nur, wenn unter Legacy-Boot gestartet wird (13)

Frage von DerWoWusste zum Thema Festplatten, SSD, Raid ...