Opcja "ZWRACA NULL ON NULL INPUT" dla skalarnego UDF (patrz CREATE FUNCTION) zatrzymuje wykonywanie funkcji, jeśli parametr ma wartość NULL i po prostu zwraca NULL.Parametry NULL w skalarnych funkcjach UDF na MSSQL
Oznacza to, że zwarcia.
Czy ktoś wie, jak obsługuje wiele parametrów?
Byłoby użyteczne zwierać wywołanie funkcji z wieloma parametrami, np. Jeśli pierwszy ma wartość NULL co najmniej.
Kiedy będę miał czas, użyję profilera, aby spróbować wyśledzić wywołania udf. Szukałem, ale nie mogę znaleźć niczego. Bardziej prawdopodobne, że nie użyłem poprawnych wyszukiwanych słów.
W międzyczasie, czy ktoś ma jakieś pomysły lub doświadczenie?
odpowiedzi z innych światów RDBMS są zbyt mile widziany .. czy jest to ustawienie ANSI i widziałem wyników dla DB2 i MySQL w moich poszukiwań
edycji, oparte na komentarz: Tylko dla funkcji non-CLR
Pozdrowienia S
Edytuj: Nie trzeba uruchamiać profilera. Doh! Świadczy to zachowanie:
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
Przydatne wiedzieć. Mam wiele UDF UML manipulacji ciągiem, które skorzystają z tego – Kristen
Dokumentacja MSDN powinna być poprawiona w tym przypadku, na pewno ! – gotqn