У меня есть этот скрипт:
CREATE FUNCTION dbo.CheckIfSFExists(@param1 INT, @param2 BIT = 1 )
RETURNS BIT
AS
BEGIN
IF EXISTS ( bla bla bla )
RETURN 1;
RETURN 0;
END
GO
Я хочу использовать это в процедуре следующим образом:
IF dbo.CheckIfSFExists( 23 ) = 0
SET @retValue = 'bla bla bla';
Но я получаю ошибку:
Недостаточное количество аргументов было предоставлено для процедуры или функции dbo.CheckIfSFExists.
Почему это не работает?
tsql
function
default-parameters
nirmus
источник
источник
default
концепции здесь ... Мне нужно пойти и изменить все места сейчас.Вы можете назвать это тремя способами - с параметрами, с DEFAULT и через EXECUTE
источник
DEFAULT
ключевое слово требуется в select, но может быть опущено в execute? Это отстой: / Надеюсь, это когда-нибудь будет исправлено.С пользовательскими функциями вы должны объявить каждый параметр, даже если они имеют значение по умолчанию.
Следующее будет выполнено успешно:
источник
Одним из способов решения этой проблемы является использование хранимых процедур с выходным параметром.
exec sp_mysprocname @returnvalue output, @firstparam = 1, @ secondparam = 2
значения, которые вы не передаете по умолчанию значениям по умолчанию, установленным в самой хранимой процедуре. И вы можете получить результаты из вашей выходной переменной.
источник