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.

Noch kein Feedback
Einen Kommentar hinterlassen

Ihre E-Mail-Adresse wird nicht auf dieser Seite angezeigt.
(Zeilenumbrüche werden zu <br />)
(For my next comment on this site)
(Allow users to contact me through a message form -- Your email will not be revealed!)
Dies ist ein Captcha Bild. Es wird benutzt, um Massenzugriffe von Robotern zu verhindern.
Bitte gib die Zeichen des obigen Bildes ein. (Groß/Kleinschreibung ist wichtig)