Methoden von CLR Datentypen sind Case Sensitive
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)
Werbung
Diesen Post teilen
Um über die neuesten Artikel informiert zu werden, abonnieren:
Kommentiere diesen Post