Tengo 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
Quiero usarlo en un procedimiento de esta manera:
IF dbo.CheckIfSFExists( 23 ) = 0
SET @retValue = 'bla bla bla';
Pero me sale el error:
Se proporcionó un número insuficiente de argumentos para el procedimiento o la función dbo.CheckIfSFExists.
Por que no funciona?
fuente
default
concepto aquí ... Necesito ir y cambiar todos los lugares ahora.Puede llamarlo de tres maneras: con parámetros, con PREDETERMINADO y mediante EJECUTAR
fuente
DEFAULT
se requiere la palabra clave en select, pero se puede omitir en execute? Esto apesta: / Espero que esto se arregle algún día.Con las funciones definidas por el usuario, debe declarar cada parámetro, incluso si tienen un valor predeterminado.
Lo siguiente se ejecutaría con éxito:
fuente
Una forma de evitar este problema es utilizar procedimientos almacenados con un parámetro de salida.
exec sp_mysprocname @returnvalue output, @firstparam = 1, @ secondparam = 2
valores que no pasa por defecto a los valores predeterminados establecidos en el procedimiento almacenado. Y puede obtener los resultados de su variable de salida.
fuente