J'ai ce script:
CREATE FUNCTION dbo.CheckIfSFExists(@param1 INT, @param2 BIT = 1 )
RETURNS BIT
AS
BEGIN
IF EXISTS ( bla bla bla )
RETURN 1;
RETURN 0;
END
GO
Je souhaite l'utiliser dans une procédure de cette manière:
IF dbo.CheckIfSFExists( 23 ) = 0
SET @retValue = 'bla bla bla';
Mais j'obtiens l'erreur:
Un nombre insuffisant d'arguments a été fourni pour la procédure ou la fonction dbo.CheckIfSFExists.
Pourquoi ça ne marche pas?
la source
default
concept ici ... Je dois changer tous les endroits maintenant.Vous pouvez l'appeler de trois façons - avec paramètres, avec DEFAULT et via EXECUTE
la source
DEFAULT
mot-clé est-il requis dans select, mais peut-il être omis dans execute? Cela craint: / J'espère que cela sera corrigé un jour.Avec les fonctions définies par l'utilisateur, vous devez déclarer tous les paramètres, même s'ils ont une valeur par défaut.
Ce qui suit s'exécuterait avec succès:
la source
Une façon de contourner ce problème consiste à utiliser des procédures stockées avec un paramètre de sortie.
exec sp_mysprocname @returnvalue sortie, @firstparam = 1, @ secondparam = 2
valeurs que vous ne transmettez pas par défaut aux valeurs par défaut définies dans la procédure stockée elle-même. Et vous pouvez obtenir les résultats de votre variable de sortie.
la source