Mein Kollege Diethard machte mich auf einen Fehler im Microsoft SQL Server 2005/2008 aufmerksam, der bei Microsoft schon bekannt ist: Wenn man (*) als erstes nach in einem Zeilenkommentar schreibt, dann kommt ein Syntaxfehler.
Hier ein Beispiel:
--(*)
Weil das so kurz ist, hier ein hübsches Repro von Diethard:
RAISERROR('--(*)',0,0);
GO
--(*)
GO
RAISERROR('-- (*)',0,0);
GO
-- (*)
GO
/* Results
--(*)
Msg 102, Level 15, State 1, Line 1
Falsche Syntax in der Nähe von '--(*'.
-- (*)
*/
GO
RAISERROR('COUNT(1) --(*)',0,0);
GO
SELECT COUNT(1) --(*)
FROM sys.sysobjects
GO
RAISERROR('COUNT(1) -- (*)',0,0);
GO
SELECT COUNT(1) -- (*)
FROM sys.sysobjects
GO
/* Results
COUNT(1) --(*)
Msg 102, Level 15, State 1, Line 1
Falsche Syntax in der Nähe von '--(*'.
COUNT(1) -- (*)
-----------
1946
*/
Weil Microsoft dem so wenig Bedeutung beimisst, wird es vermutlich erst am St.Nimmerleinstag beseitigt, bemerkte ich ihm gegenüber. Daraufhin erstellte Diethard einen Algorithmus, ob der Tag schon gekommen ist:
DECLARE @AfterStNimmerlein bit;
BEGIN TRY
EXEC('--(*)'); SET @AfterStNimmerlein = 1;
END TRY BEGIN CATCH
IF ERROR_NUMBER() = 102 SET @AfterStNimmerlein = 0;
END CATCH;
SELECT AfterStNimmerlein=@AfterStNimmerlein;
😉
Aber was uns wirklich interessieren würde: Wie kann es zu einem Syntaxfehler in einem Kommentar kommen?



