Eu tenho este 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
Eu quero usá-lo em um procedimento desta maneira:
IF dbo.CheckIfSFExists( 23 ) = 0
SET @retValue = 'bla bla bla';
Mas eu recebo o erro:
Um número insuficiente de argumentos foi fornecido para o procedimento ou função dbo.CheckIfSFExists.
Por que isso não funciona?
tsql
function
default-parameters
nirmus
fonte
fonte
default
conceito aqui ... preciso mudar todos os lugares agora.Você pode chamá-lo de três maneiras - com parâmetros, com DEFAULT e via EXECUTE
fonte
DEFAULT
palavra-chave é necessária em select, mas pode ser omitida em execute? Isso é péssimo: / Espero que isso seja corrigido algum dia.Com funções definidas pelo usuário, você deve declarar todos os parâmetros, mesmo que eles tenham um valor padrão.
O seguinte seria executado com sucesso:
fonte
Uma maneira de contornar esse problema é usar procedimentos armazenados com um parâmetro de saída.
exec sp_mysprocname @returnvalue output, @firstparam = 1, @ secondparam = 2
valores que você não passa no padrão para os padrões definidos no próprio procedimento armazenado. E você pode obter os resultados da sua variável de saída.
fonte