kleine Fallen die das Programmieren schwer machen
MSSQL-Server, User-Def. Functions und Nicht Determistische Funktionen
Folgender Versuch:
create function test() returns datetime as Begin declare @a datetime set @a = getdate() return @a end;
Der SQL Server quitiert das erstellen mit der Fehlermeldung:
Ungültige Verwendung von 'getdate' in einer Funktion.
bzw.
Invalid use of 'getdate' within a function.
Grund ist das der SQL Server nicht zulässt in Funktionen determistische Funktionen zu nutzen. Darunter fallen z.B. Rand() und GetDate().
Workaround
CREATE VIEW dbo.VIEW_GETDATE AS SELECT GETDATE() AS NOW
create function test() returns datetime as Begin declare @a datetime set @a = (select now from view_getdate) return @a end
Wichtig allerdings zu wissen ist, dass der Workaround nicht mehr auf dem MSSQL 2005 funktioniert. Dieser macht genauere Prüfungen und bricht dann die Ausführung ab.

