443: Ungültige Verwendung des Operators mit Nebenwirkungen oder Zeitabhängigkeit
Fehlermeldung:
Meldung 443, Ebene 16, Status 1, Zeile n
Ungültige Verwendung des Operators mit Nebenwirkungen oder Zeitabhängigkeit in '%1!' innerhalb einer Funktion.
Ebene:
16.
Beschreibung:
Diese Fehlermeldung erscheint, wenn man versucht, einen nichtdeterministischen Operator innerhalb einer Funktion zu verwenden.
Auswirkungen:
Das SQL Statement kann zwar geparst werden, jedoch zur Laufzeit wird der Fehler ausgelöst.
Behebung:
Fehler der Ebene 16 sind Fehler, die vom Anwender hervorgerufen werden. Sie können und müssen vom Anwender korrigiert werden. Der nichtdeterministische Operator muß aus der Funktion entfernt werden. Evtl. sollte die Funktion in eine Gespeicherte Prozedur umgewandelt werden.
Versionen:
Alle Versionen von SQL Server
Beispiele:
CREATE FUNCTION dbo.udfMyFunc()
RETURNS FLOAT
AS
BEGIN
RETURN RAND()
END
GO
Anmerkungen:
Im obigen Beispiel wird die nichtdeterministische Funktion RAND() innerhalb einer Funktion angegeben. Dies löst den Fehler aus.
Die Klassifizierung als "deterministisch" und "nicht-deterministisch" ist im Fluß. Konnte man im SQL Server 2000 GETDATE() beispielsweise nicht innerhalb einer UDF einsetzen, so ist dies im SQL Server 2005 ohne weiteres möglich. Im Zweifelsfall sollte man hier die Books Online konsultieren.
Der Text der Fehlermeldung hat sich übrigens von SQL Server 2000 auf SQL Server 2005 geändert.