L'opzione "RETURN NULL ON NULL INPUT" per una UDF scalare (vedere CREATE FUNCTION) arresta il corpo della funzione in esecuzione se il parametro è nullo e restituisce semplicemente NULL.Parametri NULL in UDF scalari su MSSQL
Cioè, cortocircuiti.
Qualcuno sa come gestisce più parametri?
Sarebbe utile cortocircuitare una chiamata di funzione con più parametri, ad esempio se il primo è almeno NULL.
Quando ho tempo, userò il profiler per cercare di rintracciare le chiamate udf. Ho cercato ma non riesco a trovare nulla .. più probabilmente potrei non aver usato i termini di ricerca corretti.
Nel frattempo, qualcuno ha qualche idea o esperienza?
Risposte da altri mondi RDBMS sono i benvenuti .. questo è un ambiente ANSI e ho visto risultati per DB2 e MySQL nelle mie ricerche
Modifica, sulla base di un commento: Per le funzioni non-CLR solo
Cheers S
Modifica: Non è necessario eseguire il profiler. Doh! Questo dimostra il comportamento:
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
Utile da sapere. Ho un numero di UDF di manipolazione delle stringhe che trarrebbero vantaggio da questo – Kristen
La documentazione MSDN dovrebbe essere migliorata in questo caso, di sicuro ! – gotqn