Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Blockly
  5. [gelöst] MySQL Stored Procedure in Blockly aufufen

NEWS

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    10
    1
    173

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    24
    1
    1.4k

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    9.4k

[gelöst] MySQL Stored Procedure in Blockly aufufen

Geplant Angeheftet Gesperrt Verschoben Blockly
blocklycommunication
11 Beiträge 2 Kommentatoren 659 Aufrufe 3 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • Martin SchlenderM Offline
    Martin SchlenderM Offline
    Martin Schlender
    schrieb am zuletzt editiert von Martin Schlender
    #1

    Moin,
    hab da eine etwas knifflige Frage.
    Und zwar hab ich mir MySQL installiert und würde dort gerne eine Stored Procedure über Blockly aufrufen:
    90a21060-3f53-4280-9a45-0d1dff1c1bbc-image.png

    Einen simplen Select bekomme ich über send to seht gut hin und das Ergebnis läßt sich auch gut auswerten.
    Bei größeren Projekten ist es aber nicht gerade elegant riesige SELECTS im Blockly Script zu verpacken.
    Wenn ich dasselbe mit einer Prozedur versuche bekommt ich immer einen Fehler:
    Beispielsweise das hier:

    CALL iobroker.GetCheapestPriceE10Week(@Preis);
    SELECT @Preis;
    

    Muß dann eventuell der Befehl von query auf procedure umgestellt werden?
    Danke Euch - Gruß
    Martin

    liv-in-skyL 1 Antwort Letzte Antwort
    0
    • Martin SchlenderM Martin Schlender

      Moin,
      hab da eine etwas knifflige Frage.
      Und zwar hab ich mir MySQL installiert und würde dort gerne eine Stored Procedure über Blockly aufrufen:
      90a21060-3f53-4280-9a45-0d1dff1c1bbc-image.png

      Einen simplen Select bekomme ich über send to seht gut hin und das Ergebnis läßt sich auch gut auswerten.
      Bei größeren Projekten ist es aber nicht gerade elegant riesige SELECTS im Blockly Script zu verpacken.
      Wenn ich dasselbe mit einer Prozedur versuche bekommt ich immer einen Fehler:
      Beispielsweise das hier:

      CALL iobroker.GetCheapestPriceE10Week(@Preis);
      SELECT @Preis;
      

      Muß dann eventuell der Befehl von query auf procedure umgestellt werden?
      Danke Euch - Gruß
      Martin

      liv-in-skyL Offline
      liv-in-skyL Offline
      liv-in-sky
      schrieb am zuletzt editiert von
      #2

      @martin-schlender

      habe das mal kurz getestet - funktioniert

      schalte mal das debug im block ein bei loglevel - vielleicht siehst du dann mehr

      Image 062.png

      nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

      Martin SchlenderM 3 Antworten Letzte Antwort
      0
      • liv-in-skyL liv-in-sky

        @martin-schlender

        habe das mal kurz getestet - funktioniert

        schalte mal das debug im block ein bei loglevel - vielleicht siehst du dann mehr

        Image 062.png

        Martin SchlenderM Offline
        Martin SchlenderM Offline
        Martin Schlender
        schrieb am zuletzt editiert von
        #3

        @liv-in-sky
        OK danke. Schau ich mir an. Der größter Unterschied scheint mir auf den ersten Blick, dass meine Prozedur einen OUT Parameter hat. Evtl. reicht es auch einfach das auf Ergebnis Recordset - also einen SELECT umzustellen.
        Danke ich versuche es mal.
        Gruß
        Martin

        1 Antwort Letzte Antwort
        0
        • liv-in-skyL liv-in-sky

          @martin-schlender

          habe das mal kurz getestet - funktioniert

          schalte mal das debug im block ein bei loglevel - vielleicht siehst du dann mehr

          Image 062.png

          Martin SchlenderM Offline
          Martin SchlenderM Offline
          Martin Schlender
          schrieb am zuletzt editiert von
          #4

          @liv-in-sky
          Hey, eben getestet und die Prozedur funktioniert:
          46beca3d-2b92-42f3-9c7e-04217e7e9938-image.png

          Allerdings bekomme ich das Ergebnis nicht. Denn im result steht nur folgendes:
          script.js.SQL.Spritpreise_Dettingen-Prozedur: {'error':null,'result':{'fieldCount':0,'affectedRows':1,'insertId':0,'info':'','serverStatus':16386,'warningStatus':0,'stateChanges':{'systemVariables':{},'schema':'','trackStateChange':null}}}

          Hab dann das hier versucht:
          CALL iobroker.GetCheapestPriceE10Week(@Preis);
          SELECT @Preis;

          und da kommt dann:
          script.js.SQL.Spritpreise_Dettingen-Prozedur: {'error':'Error: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'SELECT @Preis' at line 1'}

          Vermutlich muß ich einfach die Prozedur von Output Parameter auf Recordset umstellen um das zu lösen.
          Gruß
          Martin

          liv-in-skyL 1 Antwort Letzte Antwort
          0
          • liv-in-skyL liv-in-sky

            @martin-schlender

            habe das mal kurz getestet - funktioniert

            schalte mal das debug im block ein bei loglevel - vielleicht siehst du dann mehr

            Image 062.png

            Martin SchlenderM Offline
            Martin SchlenderM Offline
            Martin Schlender
            schrieb am zuletzt editiert von
            #5

            @liv-in-sky
            wie vermutet klappt es jetzt. Das Ergebnis der Prozedur ist nur leider zweifach verpackt in JSON - aber das ist bei Prozeduraufrufen halt so:
            {'error':null,'result':[[{'Preis':1.769}],{'fieldCount':0,'affectedRows':0,'insertId':0,'info':'','serverStatus':16386,'warningStatus':0,'stateChanges':{'systemVariables':{},'schema':'','trackStateChange':null}}]}

            Läßt sich ja lösen.
            Danke. Falls Du noch dahinter kommst wie man mit Output Variablen arbeitet wäre ich dankbar.
            LG Martin

            liv-in-skyL 2 Antworten Letzte Antwort
            0
            • Martin SchlenderM Martin Schlender

              @liv-in-sky
              wie vermutet klappt es jetzt. Das Ergebnis der Prozedur ist nur leider zweifach verpackt in JSON - aber das ist bei Prozeduraufrufen halt so:
              {'error':null,'result':[[{'Preis':1.769}],{'fieldCount':0,'affectedRows':0,'insertId':0,'info':'','serverStatus':16386,'warningStatus':0,'stateChanges':{'systemVariables':{},'schema':'','trackStateChange':null}}]}

              Läßt sich ja lösen.
              Danke. Falls Du noch dahinter kommst wie man mit Output Variablen arbeitet wäre ich dankbar.
              LG Martin

              liv-in-skyL Offline
              liv-in-skyL Offline
              liv-in-sky
              schrieb am zuletzt editiert von
              #6

              @martin-schlender sagte in MySQL Stored Procedure in Blockly aufufen:

              Danke. Falls Du noch dahinter kommst wie man mit Output Variablen arbeitet wäre ich dankbar.

              @apollon77

              weißt du, wie man die output variable in so einem call bekommt ? wird die vom adapter geliefert ?

              nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

              1 Antwort Letzte Antwort
              0
              • Martin SchlenderM Martin Schlender

                @liv-in-sky
                Hey, eben getestet und die Prozedur funktioniert:
                46beca3d-2b92-42f3-9c7e-04217e7e9938-image.png

                Allerdings bekomme ich das Ergebnis nicht. Denn im result steht nur folgendes:
                script.js.SQL.Spritpreise_Dettingen-Prozedur: {'error':null,'result':{'fieldCount':0,'affectedRows':1,'insertId':0,'info':'','serverStatus':16386,'warningStatus':0,'stateChanges':{'systemVariables':{},'schema':'','trackStateChange':null}}}

                Hab dann das hier versucht:
                CALL iobroker.GetCheapestPriceE10Week(@Preis);
                SELECT @Preis;

                und da kommt dann:
                script.js.SQL.Spritpreise_Dettingen-Prozedur: {'error':'Error: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'SELECT @Preis' at line 1'}

                Vermutlich muß ich einfach die Prozedur von Output Parameter auf Recordset umstellen um das zu lösen.
                Gruß
                Martin

                liv-in-skyL Offline
                liv-in-skyL Offline
                liv-in-sky
                schrieb am zuletzt editiert von
                #7

                @martin-schlender sagte in MySQL Stored Procedure in Blockly aufufen:

                SELECT @Preis;

                hast du mal probiert, die datenbank mit anzugeben ?

                select @Preis from .......
                

                nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

                1 Antwort Letzte Antwort
                0
                • Martin SchlenderM Martin Schlender

                  @liv-in-sky
                  wie vermutet klappt es jetzt. Das Ergebnis der Prozedur ist nur leider zweifach verpackt in JSON - aber das ist bei Prozeduraufrufen halt so:
                  {'error':null,'result':[[{'Preis':1.769}],{'fieldCount':0,'affectedRows':0,'insertId':0,'info':'','serverStatus':16386,'warningStatus':0,'stateChanges':{'systemVariables':{},'schema':'','trackStateChange':null}}]}

                  Läßt sich ja lösen.
                  Danke. Falls Du noch dahinter kommst wie man mit Output Variablen arbeitet wäre ich dankbar.
                  LG Martin

                  liv-in-skyL Offline
                  liv-in-skyL Offline
                  liv-in-sky
                  schrieb am zuletzt editiert von
                  #8

                  @martin-schlender wo rufst du eigentlich das select@Preis auf

                  wenn ich es in der procedure mache kommt das:

                  Image 068.png

                  Image 069.png

                  nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

                  Martin SchlenderM 1 Antwort Letzte Antwort
                  0
                  • liv-in-skyL liv-in-sky

                    @martin-schlender wo rufst du eigentlich das select@Preis auf

                    wenn ich es in der procedure mache kommt das:

                    Image 068.png

                    Image 069.png

                    Martin SchlenderM Offline
                    Martin SchlenderM Offline
                    Martin Schlender
                    schrieb am zuletzt editiert von
                    #9

                    @liv-in-sky
                    nee - das SELECT @Preis ist natürlich außerhalb der Prozedur im Blockly mit drin.
                    Man ruft die Prozedur auf und wertet danach das Ergebnis der Output Variable aus.

                    Wenn man das in einer MySQL Sitzung macht funktioniert das auch:
                    12b6a089-d409-44b6-a604-37256ac87efe-image.png

                    Das hier funktioniert im übrigen nicht:
                    CALL iobroker.GetCheapestPriceE10Week(@Preis);
                    SELECT iobroker.@Preis;

                    Was jetzt auch kein Wunder ist, da es sich ja um eine Variable handelt die nicht Teil der Datenbank iobroker ist.
                    LG Martin

                    liv-in-skyL 1 Antwort Letzte Antwort
                    0
                    • Martin SchlenderM Martin Schlender

                      @liv-in-sky
                      nee - das SELECT @Preis ist natürlich außerhalb der Prozedur im Blockly mit drin.
                      Man ruft die Prozedur auf und wertet danach das Ergebnis der Output Variable aus.

                      Wenn man das in einer MySQL Sitzung macht funktioniert das auch:
                      12b6a089-d409-44b6-a604-37256ac87efe-image.png

                      Das hier funktioniert im übrigen nicht:
                      CALL iobroker.GetCheapestPriceE10Week(@Preis);
                      SELECT iobroker.@Preis;

                      Was jetzt auch kein Wunder ist, da es sich ja um eine Variable handelt die nicht Teil der Datenbank iobroker ist.
                      LG Martin

                      liv-in-skyL Offline
                      liv-in-skyL Offline
                      liv-in-sky
                      schrieb am zuletzt editiert von
                      #10

                      ganz ehrlich: so richtig check ich das nicht

                      @martin-schlender sagte in [gelöst] MySQL Stored Procedure in Blockly aufufen:

                      natürlich außerhalb der Prozedur

                      ja aber dann wird ein select aufgrufen, der keine "heimat" hat - die procedure wird doch in der datenbank angelegt/definiert

                      der adapter macht eine neue anfrage mit select @Preis - woher soll er wissen, zu welcher db das gehört ? wenn man das in phpadmin macht, ist die db ja definiert, daher funktioniert das

                      oder täusche ich mich da :-)

                      nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

                      Martin SchlenderM 1 Antwort Letzte Antwort
                      0
                      • liv-in-skyL liv-in-sky

                        ganz ehrlich: so richtig check ich das nicht

                        @martin-schlender sagte in [gelöst] MySQL Stored Procedure in Blockly aufufen:

                        natürlich außerhalb der Prozedur

                        ja aber dann wird ein select aufgrufen, der keine "heimat" hat - die procedure wird doch in der datenbank angelegt/definiert

                        der adapter macht eine neue anfrage mit select @Preis - woher soll er wissen, zu welcher db das gehört ? wenn man das in phpadmin macht, ist die db ja definiert, daher funktioniert das

                        oder täusche ich mich da :-)

                        Martin SchlenderM Offline
                        Martin SchlenderM Offline
                        Martin Schlender
                        schrieb am zuletzt editiert von
                        #11

                        @liv-in-sky
                        In MySQL muß man Variablen nicht definieren.
                        Daher kann man die Output Variable @Preis einfach angeben und die wird durch die Definition in der Prozedur definiert. Das SELECT @Preis gibt sie einfach nur aus- das war der lahme Versuch an den Inhalt der Variablen zu kommen.
                        Wenn man die Prozedur aus SQL heraus aufrufen würde, würde man einfach mit dem Preis weiter rechnen oder sonst was machen.
                        LG Martin

                        1 Antwort Letzte Antwort
                        0
                        Antworten
                        • In einem neuen Thema antworten
                        Anmelden zum Antworten
                        • Älteste zuerst
                        • Neuste zuerst
                        • Meiste Stimmen


                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        389

                        Online

                        32.5k

                        Benutzer

                        81.7k

                        Themen

                        1.3m

                        Beiträge
                        Community
                        Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                        ioBroker Community 2014-2025
                        logo
                        • Anmelden

                        • Du hast noch kein Konto? Registrieren

                        • Anmelden oder registrieren, um zu suchen
                        • Erster Beitrag
                          Letzter Beitrag
                        0
                        • Home
                        • Aktuell
                        • Tags
                        • Ungelesen 0
                        • Kategorien
                        • Unreplied
                        • Beliebt
                        • GitHub
                        • Docu
                        • Hilfe