Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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, 3392 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
Batch & Shell
gelöst Mit zusammengesetzter Variable auf andere Variable zugreifen (2)

Frage von abiber zum Thema Batch & Shell ...

Datenbanken
gelöst Mittelwert aus anderer Query in Textfeld funktioniert nicht Access 2010 (3)

Frage von Dr.Cornwallis zum Thema Datenbanken ...

Windows Netzwerk
gelöst Wireshark - Name query NB . sysprepPC (17)

Frage von Freak-On-Silicon zum Thema Windows Netzwerk ...

Datenbanken
gelöst MySQL Function Anzahl Datensätze ermitteln (4)

Frage von MultiStorm zum Thema Datenbanken ...

Neue Wissensbeiträge
Windows Server

Umstellung SHA 1 auf SHA 2 - Migration der CA von CSP auf KSP

Tipp von Badger zum Thema Windows Server ...

Windows 10

Quato DTP94 unter Windows 10 x64 installieren und verwenden

Anleitung von anteNope zum Thema Windows 10 ...

Windows 10

Win10 1703 und Nutzerkennwörter bei Ersteinrichtung - erstaunliche Erkenntnis

(15)

Erfahrungsbericht von DerWoWusste zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Festplatten, SSD, Raid
gelöst Raid-Controller (Areca) Datenverlust trotz R5 (14)

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

Webentwicklung
Aktuellen Mitarbeiter auf Homepage anzeigen (13)

Frage von alemanne21 zum Thema Webentwicklung ...

Microsoft Office
gelöst Office 365 Pro Domäne einrichten OHNE Webseite (9)

Frage von thklemm zum Thema Microsoft Office ...

Server-Hardware
HP ProLiant DL380 G7, POST Error: 1785-Drive Array not Configured (9)

Frage von Paderman zum Thema Server-Hardware ...