Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

Auf Fehler prüfen

Dieses Thema im Forum "Microsoft SQL Server" wurde erstellt von ukulele, 17 Oktober 2013.

  1. ukulele

    ukulele Datenbank-Guru

    Es ist ja irgendwie immer das Selbe. Man schreibt ein kleines, 500 Zeilen SQL Script das irgendwo dynamisch Code generiert und ausführt und dann hakt es an einer klitzekleinen Stelle und man sucht sich nen Wolf.

    Beispiel: Ich prüfe mehrere Spalten einer Tabelle und erstelle eine Statistik über die Werte. Das Script werde ich noch posten wenn es fertig ist. In jedem Fall muss ich mit EXEC() arbeiten und in 1% der Fälle habe ich irgendwo einen arithmetischen Überlauffehler. In diesem Fall habe ich es nach langer Suche gefunden:
    Code:
    SET        @value_avg = (        SELECT    avg(' + @column_name + ')
                                FROM    ' + @table_name + '
                                WHERE    ' + @column_name + ' IS NOT NULL )
    Die Spalte ist ein INT, bilde ich die Summe über die Spalte (was auch bei avg() im ersten Schritt passiert) ist der INT zu klein. Konvertierung in BIGINT schafft Abhilfe. Was aber wenn die Spalte Nachkommastellen hat und Werte zwischen 0 und 1 beinhaltet? Dann killt mir mein BIGINT meinen Durchschnitt...

    Jedenfalls bin ich häufig in der Situation einen Fehler erkennen zu müssen. Kennt irgendjemand einen Weg dies zu bewerkstelligen?
     
  2. akretschmer

    akretschmer Datenbank-Guru

    Für sowas halt keinen generischen Code verwenden? Oder je nach Typ unterschiedliche Funktionen definieren? Das zumindest geht in PG.

    Code:
    create function foo(float) ...
    create function foo(int) ...
    ...
    
    Andreas
     
  3. ukulele

    ukulele Datenbank-Guru

    Natürlich kann ich für jeden Datentypen eigenen Code schreiben aber das macht die Sache unübersichtlicher bzw. aufwendiger. Außerdem fällt das Debuggen dadurch nicht leichter und genau da nervt es mich. SQL Studio spuckt dann nur 100x (1 Zeile(n) betroffen) aus und irgendwo dazwischen steht ein Fehler, ich kann aber nicht sehen bei welchem Datensatz oder welcher Variable das passiert ist und darf dann suchen / raten.

    Am liebsten wäre mir eine Funktion die mir das Resultat eines Querys, also z.B. "(1 Zeile(n) betroffen)" zurück gibt.
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden