La opción "DEVUELVE NULL EN ENTRADA NULA" para una UDF escalar (consulte CREATE FUNCTION) detiene la ejecución del cuerpo de la función si el parámetro es nulo y simplemente devuelve NULL.Parámetros NULL en UDF escalares en MSSQL
Es decir, cortocircuitos.
¿Alguien sabe cómo maneja múltiples parámetros?
Sería útil cortocircuitar una llamada de función con múltiples parámetros, por ejemplo, si el primero es NULO como mínimo.
Cuando tenga tiempo, usaré el generador de perfiles para intentar rastrear las llamadas udf. He buscado pero no puedo encontrar nada. Es más probable que no haya utilizado los términos de búsqueda correctos.
Mientras tanto, ¿alguien tiene alguna idea o experiencia?
Respuestas de los otros mundos RDBMS también son bienvenidos .. esta es una configuración ANSI y vi resultados para DB2 y MySQL en las búsquedas
Editar, con base a un comentario: Para las funciones CLR no sólo
Cheers S
Edit: No necesito ejecutar el generador de perfiles. Doh! Esto demuestra el comportamiento:
CREATE FUNCTION dbo.ufnTest (
@dummy tinyint
)
RETURNS tinyint
WITH RETURNS NULL ON NULL INPUT
AS
BEGIN
RETURN 1
END
GO
SELECT dbo.ufnTest(0), dbo.ufnTest(NULL)
GO
ALTER FUNCTION dbo.ufnTest (
@dummy tinyint
)
RETURNS tinyint
--WITH RETURNS NULL ON NULL INPUT
AS
BEGIN
RETURN 1
END
GO
SELECT dbo.ufnTest(0), dbo.ufnTest(NULL)
GO
ALTER FUNCTION dbo.ufnTest (
@dummy tinyint,
@dummy2 tinyint
)
RETURNS tinyint
WITH RETURNS NULL ON NULL INPUT
AS
BEGIN
RETURN 1
END
GO
SELECT dbo.ufnTest(0, 2), dbo.ufnTest(NULL, 2), dbo.ufnTest(0, NULL)
GO
ALTER FUNCTION dbo.ufnTest (
@dummy tinyint,
@dummy2 tinyint
)
RETURNS tinyint
--WITH RETURNS NULL ON NULL INPUT
AS
BEGIN
RETURN 1
END
GO
SELECT dbo.ufnTest(0, 2), dbo.ufnTest(NULL, 2), dbo.ufnTest(0, NULL)
GO
Útil saber. Tengo varias UDF de manipulación de cadenas que se beneficiarían de esta – Kristen
La documentación de MSDN debería mejorarse en este caso, de seguro ! – gotqn