Overblog Folge diesem Blog
Edit post Administration Create my blog
Blog von Olaf Helper

Methoden von CLR Datentypen sind Case Sensitive

16. April 2010 , Geschrieben von Olaf Helper Veröffentlicht in #.NET

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 

Diesen Post teilen

Repost 0

Kommentiere diesen Post