Friday, 16. april 2010 5 16 /04 /Apr. /2010 10:19

Ja, bin ich hier in C#?

 

Wem es noch nicht aufgefallen ist, die Methoden von CLR Datentypen wie Geometry oder Xml sind Case Sensitive und das unabhängig von der Collation des Microsoft SQL Server oder der aktuellen Datenbank. Man muss also die Groß-/Kleinschreibung beachten, sonst gibt es Laufzeitfehler.

 

-- Diesesmal nicht AdventureWorks, den die
-- ist CaseSensitive (CS); diesmal die TempDB (CI)
USE [tempdb]
GO
 
-- So funktioniert es: Richtige Groß-/Kleinschreiubng
DECLARE @geo geometry;
SET @geo = geometry::STGeomFromText('POINT(1 1)', 0);
SELECT @geo.ToString() AS Result;
GO
 
-- Alles klein geschrieben: IntelliSense erkennt es nicht
-- und es gibt einen Laufzeit-Fehler. 
-- Geometry darf hingegen groß geschrieben werden
DECLARE @geo geometry;
SET @geo = Geometry::STGeomFromText('POINT(1 1)', 0);
SELECT @geo.tostring() AS Result;
GO
 
-- Bei XML gilt das gleiche, wobei IntelliSense bei "value"
-- weder Klein- (was hier korrekt ist) noch Großschreibung
-- anerkennt
DECLARE @xml XML;
SET @xml = '<test attr="Hallo" />';
SELECT x.value('@attr', 'varchar(5)') AS Result
FROM @xml.nodes('test') as s(x)
GO
 
Result
-------------------
POINT (1 1)
 
(1 row(s) affected)
 
Msg 6506, Level 16, State 10, Line 7
Die 'tostring'-Methode für den 'Microsoft.SqlServer.Types.SqlGeometry'-Typ wurde in der 'Microsoft.SqlServer.Types'-Assembly nicht gefunden.
 
Result
------
Hallo
 
(1 row(s) affected)

  

 

 

 

 
ClrDatenTypenCS.jpg
von Olaf Helper - veröffentlicht in: .NET - Community: Microsoft SQL Server
Kommentar hinzufügen - Kommentare (0)ansehen
Zurück zur Startseite

Über diesen Blog

Kategorien

Kalender

June 2012
M T W T F S S
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30  
<< < > >>

Syndication (RSS)

  • RSS-Feed der Artikel

Suchen

Blog erstellen

Erstellen Sie einen Blog auf OverBlog - Kontakt - Nutzungsbedingungen - Werbung - Missbrauch melden - Impressum - Artikel mit den meisten Kommentaren