Ankündigung

Einklappen
Keine Ankündigung bisher.

Stored Procedures bei SELECT mit mehreren ergebnissen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Stored Procedures bei SELECT mit mehreren ergebnissen

    Hi,
    ich versuche mich derzeit an Stored Procedures.
    Soweit alles kein Problem, solange ich nur INSERT,UPDATES und einfache SELECT anfragen verwende.

    Wenn ich jetzt allerdings z.b.:
    Code:
    SELECT
        `Foo`,
        `Bar`
    FROM   
        `bla`
    WHERE
        `ID` > 5;
    möchte, also jeden Datensatz mit ID größer 5, wie funktioniert das dann?
    Würde das nur einen Datensatz treffen, würde das anlegen ja so aussehen:
    Code:
    CREATE PROCEDURE test (OUT `Fo` INT, OUT `Ba` INT)
    SQL SECURITY INVOKER
    BEGIN
        SELECT
            `Foo`,
            `Bar`
        INTO
            `Fo`,
            `Ba`
        FROM   
            `bla`
        WHERE
            `ID` > 5;
    END;
    Und das abholen dann
    PHP-Code:
    mysql_query('CALL test(@Foo, @Bar);');
    $result mysql_query('SELECT @Foo,@Bar;');
    $arr mysql_fetch_assoc($result); 
    Wie mach ich das jetzt mit mehreren Datensätzen?

    Vielen Dank.

  • #2
    Sinngemäß muss Du einen CURSOR aus der Stored Procedure zurückgeben. Aber das unterstützt MySQL nicht bzw. derzeit nicht.

    Das könnte Schematisch in etwa so aussehen...

    Code:
    CREATE FUNCTION getData (IN xxx )
     RETURN my_cur
    BEGIN
     DECLARE my_cur CURSOR FOR
       SELECT col1, col2 FROM tabellex
        WHERE id > xxx;
    
       
    END$$
    Was Stored Procedure angeht, ist MySQL noch nicht sehr stark. Besser ist da SQL-Server, ORACLE, IBM DB2 oder postgreSQL ...(wen habe ich noch vergessen?)

    Grüße
    Thomas

    Kommentar


    • #3
      d.h. derzeit nicht möglich, und bei diesen abfragen muss ich weiterhin auf dynamisches sql setzen?
      Ok gut zu wissen, danke

      Kommentar


      • #4
        MySQL :: Re: How can I return multiple rows in a stored procedure
        [SIZE="1"]RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?[/SIZE]

        Kommentar


        • #5
          Den Link-Hinweis habe ich nicht verstanden und der Folgelink zu dem Beispiel
          http://mysql.gilfster.com/php/introduction.php endet mit einem Error 404 Not Found.

          Grüße
          Thomas

          Kommentar


          • #6
            Zitat von Screeze Beitrag anzeigen
            d.h. derzeit nicht möglich, und bei diesen abfragen muss ich weiterhin auf dynamisches sql setzen?
            Ok gut zu wissen, danke
            Kommt letztlich darauf an was Du machen möchtest. Eine Verarbeitung von Daten kann ja komplett in der Stored Procedure anstatt in PHP erfolgen.

            Grüße
            Thomas

            Kommentar


            • #7
              Zitat von thomas_w Beitrag anzeigen
              Kommt letztlich darauf an was Du machen möchtest. Eine Verarbeitung von Daten kann ja komplett in der Stored Procedure anstatt in PHP erfolgen.

              Grüße
              Thomas
              Das stimmt auch wieder... da es sich er allerdings um 1 bis 1.000.000 datensätzen handeln kann, anhand derer dann noch etliche weitere datensätze bearbeitet/ausgelesen werden müssen, und einige berechnungen gemacht werden müssen, bin ich mir noch nicht so einig darüber, ob ich die berechnende Last lieber auf den webserver oder den datenbankserver abwälze....

              Kommentar

              Lädt...
              X