Arithmetischer Überlauffehler für smallint-Datentyp

Chillazz

Benutzer
Beiträge
22
Code:
ALTER PROCEDURE [dbo].[Postleitzahlenmenge]
   
    @Monat smallint,
    @Jahr smallint
    AS
BEGIN
 
    SET NOCOUNT ON;

    DECLARE @PLZMenge TABLE
        (MPLZ nvarchar(20),
        MTeilPLZ nvarchar(50),
        MMenge nvarchar(50),
        PMonat smallint,
        PJahr smallint)
       

    INSERT INTO @PLZMenge
    (MPLZ, MTeilPLZ, MMenge)
    SELECT
        [PLZ],
        [Artikel],
        SUM (Menge)
    FROM tmpImportAll
    WHERE Monat = @Monat
        AND Jahr = @Jahr
    GROUP BY       
        [PLZ],
        [Artikel]
    HAVING SUM([Menge]) <> 0

    DECLARE @PLZContact TABLE
    (CPLZ nvarchar(20),
        CAnz smallint)

    INSERT INTO @PLZContact
    (CPLZ, CAnz)
    SELECT [PostCode], COUNT([PKID])
    FROM [dbo].[tabKontakte], @PLZMenge
    WHERE [PostCode] like MPLZ + '%'
    GROUP BY [PostCode]
   
   
   
   
    DELETE [dbo].[tabUmsätze]
    WHERE Monat = @Monat
         and Jahr= @Jahr

    INSERT INTO [dbo].[tabUmsätze]
    (TeilPLZ, Menge)
    Select [CPLZ],[CAnz]
    From @PLZContact

END
Hallo Liebe Community ,

habe mal wieder =) ein Problem bei SQL .

Ich habe eine Stored Procedure wo nach dem durchlauf immer die Fehlermeldung
Arithmetischer Überlauffehler für smallint-Datentyp, Wert = 44968.

Habe mir alle Tabellen und Stored Proceduren , die in der Stored Procedure verarbeitet sind angeschaut also den Datentyp für die Spalte Postleizahl, wobei es sich hier handeln muss.
Das entnehme ich wegen der 44968, und weil die Stored Procedure , ja die Postleitzahlen der gleichen Gebiete zusammen Zählen soll.

Ich leider nur noch wo ich noch nach den Fehler suchen soll , vielleicht hat ja einer von euch eine Idee , oder Tipp .
Lg Chillazz

Code
 
Werbung:
Also deine MPLZ hat den Dateityp NVARCHAR(20) und nicht SMALLINT. SMALLINT geht auch nur bis 32768, wäre also für PLZ ungeignet. Hat deine Zieltabelle eventuell andere Datentypen als deine Variablen?
 
Du solltest deine Prozedur mal stückweise ausführen um die Anweisung zu finden die den Fehler hervorruft.

Ist vieleicht die "Menge" Spalte in tmpImportAll ein SMALLINT? Dann wird auch die Summe davon als SMALLINT behandelt und könnte zu groß werden.
 
Also ich wollte mitteilen das ich es Fehler nicht mehr habe, der Witz ist habe einfach alles raus kopiert, dann einzeln durchlaufen lassen. Schließlich da nirgend wo ein Fehler erschien alles zusammen laufen lassen, und danach hat es geklappt XD.

Freaky SQL
 
Ich möchte kein neues Thema aufmachen , mein Problem bei der SP hier ist jetzt folgendes.

In meiner end Tabelle Umsätze , müssen Folgende Spalten rein Postleitzahl und Menge was auch gemacht wird.
Aber auch noch Monat , Jahr ,Produkt und eine der Name der Geschäfte.
Das Problem ist aber das z.b die Geschäfte in keiner Tabelle gespeichert sind, sondern nur in einer SP angegeben werden.
Kann man diese Trotzdem irgendwie angeben , das diese mit in die Tabelle kommen , also das ich auch Monat , Jahr und Geschäfte drin habe?

LG Chillazz
 
Meine PLZ beginnt mit 0. Speichere das als INT und gebe es aus . Die 0 fehlt. FAIL.
Dann kriegst du wohl keine Post :) - Aber mal im ernst, im neuen PLZ System existiert meines wissens nach keine 4-stellige PLZ mehr. So gesehen ließe sich die 0 durch die Anwendung "errechnen" und die Daten wären wieder vollständig.

@Chillazz Ich versteh kein Wort. Lass deine SP doch die "Geschäfte" in eine Tabelle schreiben?
 
:D sorry ich erkläre das wohl auch immer etwas blöd, ich schaue mal nach ob sich da irgend was ergibt.
Sonst schreibe ich nochmal , natürlich besser Formuliert ;)
 
Ich möchte kein neues Thema aufmachen , mein Problem bei der SP hier ist jetzt folgendes.

In meiner end Tabelle Umsätze , müssen Folgende Spalten rein Postleitzahl und Menge was auch gemacht wird.
Aber auch noch Monat , Jahr ,Produkt und eine der Name der Geschäfte....


LG Chillazz

Das Problem konnte ich Lösen , musste die anderen Spalten vorher auch angeben.

Dafür läuft die Stored Procedure nicht mehr , ich habe das Problem das sich im Letzen Abschnitt eine schleife versteckt.
Und ich immer die Fehlermeldung bekomme,das der Speicherplatz belegt ist .

Code:
INSERT INTO [dbo].[tabUmsatz]
    (NummerL,Artikel,PostleitZahl, Menge, Monat, Jahr)
    Select [MNummer],[MArtikel],[CPostleitZahl], [CAnz], @Monat, @Jahr
    From @Postleitzahlenmenge,@PostleitZahlenKontakte

ich bin mir da nicht zu 100% , aber wenn ich aus zwei Tabellen was in einer Kopieren will , ist das doch so Richtig oder ?:confused:

LG Chillazz
 
Werbung:
Nein. Du kannst deine beiden Quell-Tabellen per Join verbinden und das Ergebnis per Insert einfügen. Dafür brauchst du keine Variablen.
 
Zurück
Oben