Mam ten skrypt:
CREATE FUNCTION dbo.CheckIfSFExists(@param1 INT, @param2 BIT = 1 )
RETURNS BIT
AS
BEGIN
IF EXISTS ( bla bla bla )
RETURN 1;
RETURN 0;
END
GO
Chcę to wykorzystać w procedurze w ten sposób:
IF dbo.CheckIfSFExists( 23 ) = 0
SET @retValue = 'bla bla bla';
Ale pojawia się błąd:
Podano niewystarczającą liczbę argumentów dla procedury lub funkcji dbo.CheckIfSFExists.
Dlaczego to nie działa?
tsql
function
default-parameters
nirmus
źródło
źródło
default
tutaj z koncepcji ... Muszę teraz zmienić wszystkie miejsca.Możesz to nazwać na trzy sposoby - z parametrami, z DEFAULT i przez EXECUTE
źródło
DEFAULT
słowo kluczowe jest wymagane w select, ale można je pominąć w wykonaniu? To jest do bani: / Miejmy nadzieję, że zostanie to kiedyś naprawione.W przypadku funkcji zdefiniowanych przez użytkownika musisz zadeklarować każdy parametr, nawet jeśli mają one wartość domyślną.
Następujące czynności zostałyby wykonane pomyślnie:
źródło
Jednym ze sposobów obejścia tego problemu jest użycie procedur składowanych z parametrem wyjściowym.
exec sp_mysprocname @returnvalue output, @firstparam = 1, @ secondparam = 2
wartości, które nie są przekazywane domyślnie do wartości domyślnych ustawionych w samej procedurze składowanej. Wyniki można uzyskać ze zmiennej wyjściowej.
źródło