Verschiedenes

By Frank Kalis

Posted on Sep 7, 2005 von in SQL Server

Wenn man Tabellen erstellt, Variablen deklariert oder andere Sachen macht, bei denen man mit Datentypen in Berührung kommt, sollte man stets präzise den Untertypen angegeben, den man verwenden möchte. Hier bringt es nichts ein Lazycoder zu sein, der ein paar Tastaturanschläge sparen will.

Beispiel 1: Wenn man eine VARCHAR Variable der Länge 10 deklarieren möchte, gibt man an

DECLARE @MyVar VARCHAR(10)

und nicht

DECLARE @MyVar VARCHAR

SQL Server nimmt standardmässig eine Länge von 1 für Zeichenfolgen, sofern man nicht explizit die Länge vorgibt. SQL Server schneidet ferner die Daten ab, ohne eine Warnung auszugeben:

DECLARE @MyVar VARCHAR
SET @MyVar = 'AB' 
SELECT @MyVar AS Only_one_character

Only_one_character 
------------------ 
A

(1 row(s) affected)

Beispiel 2: Man möchte eine Variable vom Typ DECIMAL mit einer Precision von 8 und Scale von 2 deklarieren.

DECLARE MyVar DECIMAL(8,2)

Schreibt man hingegen

DECLARE @MyVar DECIMAL

unterstellt SQL Server hier den Datentyp DECIMAL(18,0).

DECLARE @MyVar DECIMAL
SET @MyVar = 123456789012345678
SELECT @MyVar
                     
-------------------- 
123456789012345678

(1 row(s) affected)

Im Unterschied jedoch zu Zeichenfolgen, generiert SQL Server eine Warnung, falls der Wert zu groß ist, um in einen DECIMAL(18,0) zu passen

DECLARE @MyVar DECIMAL
SET @MyVar = 1234567890123456789
SELECT @MyVar

Server: Msg 8115, Level 16, State 8, Line 2
Arithmetic overflow error converting numeric to data type numeric.
                     
-------------------- 
NULL

(1 row(s) affected)

*****

Dieser Eintrag wurde eingetragen von und ist abgelegt unter SQL Server. Tags: ,

Noch kein Feedback


Formular wird geladen...