Announcement

Collapse
No announcement yet.

Upgrade auf Version 8

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

  • Upgrade auf Version 8

    Hallo,
    wir haben jetzt MySql Version 8 installiert. Unsere Stored Procedures funktionieren nicht mehr. In der vorangehenden Version hatten wir in den SPs deklariert:
    DECLARE EXIT HANDLER FOR SQLEXCEPTION SELECT -1;
    Geht das jetzt in der Version 8 anders?
    Gruß Norbert

  • #2
    Nein

    https://dev.mysql.com/doc/refman/8.0...e-handler.html
    Christian

    Comment


    • #3
      Danke Christian für die schnelle Antwort. Hab jetzt mal das "DECLARE EXIT HANDLER ..." rausgenommen und bekomme die Fehlermeldung:
      Incorrect Date Value
      Da die SP sehr gross ist, dauert das Suchen nach dem Fehler. Hat sich in der 8er etwas am Datumsformat geändert?

      Comment


      • #4
        Kann man eigentlich eine SP im VisualStudio 2019 (VB) debuggen? Dann würde ich den Fehler leicht finden.
        Hab gerade dieselbe SP unter MySql 5.x mit denselben Parametern und derselben DB aufgerufen. Da kommt keine Fehlermeldung.

        Comment


        • #5
          Weiß ich nicht, ob es in VS geht. Vermutlich nicht. Aber in der MySQL Workbench geht das

          https://dev.mysql.com/downloads/workbench/
          Christian

          Comment


          • #6
            Danke! Hab den Fehler eingrenzen können. Ich deklariere am Anfang eine Variable myDate as DATE. In einem SELECT weiter unter steht aber in dem Feld, dessen Wert in myDate übernommen werden soll, NULL. Die 5er hat das gefressen und keine Exception geworfen. Die 8er lässt das aber scheinbar nicht zu.
            Bevor ich jetzt die gesamte SP neu schreiben muss: hast Du eine Idee wie ich das mit weniger Aufwand hinbekommen könnte?

            Comment


            • #7
              Ich verstehe das Problem nicht. Durch einen select kann doch NULL rauskommen und somit der Variablen zugeordnet werden
              Christian

              Comment


              • #8
                Die Variable ist aber fest als DATE deklariert. Wie gesagt in 5.x kein Problem, aber jetzt in 8 wohl doch. Hab noch nicht debuggt. Aber es kann eigentlich nur daran liegen. Oder meinst Du nicht? Kannst Du es nachstellen (NULL in eine als DATE deklarierte Variable speichern)? Ich bin doch nur Laie ...

                Comment


                • #9
                  DECLARE ktbegin DATE;
                  SELECT C2001,C2006,C2018,C2025,C2026,C2028 INTO vknr,gebordnung,ktgruppe,ktbegin,ktende,aufnkt FROM t800 WHERE ID=kassen_id;

                  Comment


                  • #10
                    Ich habe keine 8er Version
                    Es sollte mich aber wundern, wenn ein Feld nicht null werden kann
                    Christian

                    Comment


                    • #11
                      Danke! Jetzt hab ich Dich aber genug gequält. Ich versuche jetzt über die Workbench weiter zu kommen.
                      Schöne Grüße
                      Norbert

                      Comment


                      • #12
                        Originally posted by strzata View Post
                        DECLARE ktbegin DATE;
                        SELECT C2001,C2006,C2018,C2025,C2026,C2028 INTO vknr,gebordnung,ktgruppe,ktbegin,ktende,aufnkt FROM t800 WHERE ID=kassen_id;
                        Bei diesem "Codeschnipsel" sehe ich kein mydate und frage mich, wo die Übernahme in die Variable erfolgt, die nun genau so benannt ist, wie das Feld.
                        Solche Angaben sind nicht hilfreich.

                        Es ist mir keine DB bekannt, die keine Nullwerte aus einem Select verarbeiten kann.

                        Vielleicht ist ja die Neuinstallation mit anderen Defaultformaten für Datum installiert und irgendwo knallt eine implizite Textkonvertierung oder die Rückumwandlung. Mysql ist aber im Datumshandling auch speziell und ich hab da keine praktische Erfahrung.
                        Gruß, defo

                        Comment


                        • #13
                          Danke defo, dass Du Dich nochmal reinhängst. mydate war nur als Beispiel gedacht. Habs dann konkretisiert (entspr. meinem Originalcode). Und da heisst die Variable ktbeginn (Kostenträger Gültigkeit Beginn). Ich sitz schon den ganzen Tag Das einzige was ich rausgefunden habe ist, dass es sich wahrscheinlich nicht um ein NULL handelt, sondern scheinbar kommt ein Leerstring aus der DB. Und das kann nicht in ein Datum gewandelt werden. Kenne ich zumindest so in VS.

                          Ich kann nur weiterkommen, wenn ich die SP debuggen kann. Es gibt zig Stellen, wo es knallen kann. Aber weder mit der Workbench noch mit VS ist mir das bis jetzt gelungen. Ich suche schon stundenlang, wie man das macht. Ich finde nicht, wie man die IN-Parameter vorgibt. VS (ServerExplorer --> Debug MySql Routine) beschwert sich mit System.Windows.Forms.NativeWindow. line 15:22 no viable alternative at input wegen den fehlenden IN-Parametern. Und in der WB finde ich keinen Menüpunkt zum Debuggen. Vielleicht kannst Du nochmal eingreifen, wenn es Deine Zeit erlaubt. Danke.


                          Comment


                          • #14
                            So allmählich komme ich zu Resultaten. Hatte eine Variable found deklariert. Und found ist jetzt in MySQL 8 ein Schlüsselwort! Vielleicht nicht unwichtig für andere User, die auf 8 umsteigen. Jetzt verstehe ich auch die Fehlermeldung von oben. Das hat mir nicht erlaubt, die IN-Parameter einzugeben, weil es vorher schon zu einer Exception kam.
                            Jetzt suche ich noch, wie man im VS beim Debuggen der SP schrittweise vorgehen kann. Einen Breakpunkt zu setzen ist mir noch nicht vergönnt ...

                            Comment

                            Working...
                            X