Ich habe dieses Skript:
CREATE FUNCTION dbo.CheckIfSFExists(@param1 INT, @param2 BIT = 1 )
RETURNS BIT
AS
BEGIN
IF EXISTS ( bla bla bla )
RETURN 1;
RETURN 0;
END
GO
Ich möchte es in einer Prozedur folgendermaßen verwenden:
IF dbo.CheckIfSFExists( 23 ) = 0
SET @retValue = 'bla bla bla';
Aber ich bekomme den Fehler:
Für die Prozedur oder Funktion dbo.CheckIfSFExists wurde nicht genügend Argumente angegeben.
Warum funktioniert es nicht?
quelle
default
Konzept ... Ich muss jetzt alle Orte wechseln.Sie können es auf drei Arten aufrufen - mit Parametern, mit DEFAULT und über EXECUTE
quelle
DEFAULT
Schlüsselwort in select benötigt, kann aber in execute weggelassen werden? Das ist scheiße: / Hoffentlich wird das eines Tages behoben.Bei benutzerdefinierten Funktionen müssen Sie jeden Parameter deklarieren, auch wenn er einen Standardwert hat.
Folgendes würde erfolgreich ausgeführt:
quelle
Eine Möglichkeit, dieses Problem zu umgehen, besteht darin, gespeicherte Prozeduren mit einem Ausgabeparameter zu verwenden.
exec sp_mysprocname @returnvalue output, @firstparam = 1, @ secondparam = 2
Werte, die Sie standardmäßig nicht an die in der gespeicherten Prozedur selbst festgelegten Standardeinstellungen übergeben. Und Sie können die Ergebnisse von Ihrer Ausgabevariablen erhalten.
quelle