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?