Announcement

Collapse
No announcement yet.

Mehrere SQL-Statments in einem Rutsch

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Mehrere SQL-Statments in einem Rutsch

    Hallo!

    Ich möchte mehrere Statements in einem Rutsch zur Datenbank senden.
    Dies funktioniert auch, indem ich mehrere UPDATES durch Semikolons trenne.

    Nun möchte ich aber Stored Procedures aufrufen. Wenn ich aber mehrere Aufrufe an die Datenbank sende, wird immer nur die erste ausgeführt.

    Woran kann dies liegen und gibt es eine Möglichkeit, dies zu umgehen?

    Beispiel:
    call MyProc("data", "personen", "Vorname", 7, "Hans", "en-US");
    call MyProc("datal", "personen", "Vorname", 17, "Uwe", "en-US");

  • #2
    Unter Oracle wären das anonymous blocks, die gab es aber bisher nicht in mySQL.
    Code:
    declare .. Variablen
    begin
       irgendein select..
       ..
       irgendeine schleife
           irgendein Befehl
       ..
       irgendeine ausgabe (oder so)
    end;
    Vielleicht ist es mittlerweile verfügbar. Ansonsten:
    Wenn du mit den updates so zurecht kommst, bleibt für die Verkettung von SP nichts weiter, als eine weitere, klammernde SP, die die Aufrufe durchführt.
    Gruß, defo

    Comment


    • #3
      Hallo!

      Du hast mich glaube ich falsch verstanden.
      Ich möchte keine SP schreiben, in welcher ich mehrere Updates ausführe,
      sondern 2 SP-Aufrufe, mit Semikolon getrennt, an die Datenbank senden!

      Comment


      • #4
        Ich denke da hast du defo mißverstanden. Er schlägt vor eine neue SP zu schreiben, die deine beiden SPs aufruft...

        Was spricht denn gegen mehrere einzelne Aufrufe - oder sind es viel mehr als 2? Du könntest auch versuchen, deine SP so abzuändern, dass sie ein Array/Table als Parameter erwartet in dem alle zu ändernden Datensätze stehen. Da kann ich aber nicht sagen ob das in mySQL geht.

        Thomas

        Comment


        • #5
          ... es sind viel mehr als zwei ...

          Comment


          • #6
            Hallo,

            Defacto kann der MySQL-Server bei jedem Aufruf NUR EINE Operation ausführen, sei es nun SQL, DML, DDL oder der Aufruf einer SP! Die Möglichkeit mehrere Statements mit einem Trennzeichen versehen quasi gleichzeitig an die DB zu senden, ist ein Feature des Clients. Dieser macht nichts anderes, als die Statements am Trennzeichen zu trennen und mit einzelnen Aufrufen an die DB zu schicken.
            Du solltest also zuerst mal sagen, um welchen Client es geht und woraus du schlussfolgerst, dass nur der erste SP-Aufruf ausgeführt wird.

            Gruß Falk
            Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

            Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

            Comment


            • #7
              Gut zu wissen, wollte halt aus Performance nur einen "großen SQL" senden, aber wenn er ohnehin vom Client einzeln gesendet wird ergibt dies keinen weiteren Sinn.

              Dann muss ich wohl schauen!

              Comment

              Working...
              X