Artikel teilen! Methoden von CLR Datentypen sind Case Sensitive: Ja, bin ich hier in C#? Wem es noch nicht aufgefallen ist, die Method ...
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)
| 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 | |||||
|
||||||||||
Neueste Kommentare