Czy można wywołać funkcję skalarną w funkcji wycenianej za pomocą tabeli?Funkcja w ramach funkcji TSQL
Dzięki
Czy można wywołać funkcję skalarną w funkcji wycenianej za pomocą tabeli?Funkcja w ramach funkcji TSQL
Dzięki
Tak, tak długo, jak funkcja wycenione tabela zwraca tabelę, kiedy to zrobić.
Funkcje zdefiniowane przez użytkownika można zagnieżdżać; czyli jedna funkcja zdefiniowana przez użytkownika może zadzwonić na inną. Poziom zagnieżdżania to zwiększany, gdy wywołana funkcja rozpoczyna wykonywanie, a zmniejszona, gdy wywołana funkcja kończy się wykonaniem. Funkcje zdefiniowane przez użytkownika mogą być zagnieżdżone do 32 poziomów. Przekraczając , maksymalne poziomy zagnieżdżania powodują, że cały łańcuch wywołujący funkcję nie działa z powodu . Wszelkie odniesienia do zarządzanego kodu z zdefiniowanej przez użytkownika Transact-SQL funkcji są liczone jako jeden poziom w stosunku do 32-poziomowego limitu zagnieżdżania. Metody wywoływane z kodu zarządzanego do nie liczą się z tym limitem.
http://msdn.microsoft.com/en-us/library/ms186755.aspx
Jest to bardzo proste, ale to działa:
--DROP FUNCTION RETURN_INT
--GO
CREATE FUNCTION RETURN_INT()
RETURNS INT
WITH EXECUTE AS CALLER
AS
BEGIN
RETURN 1
END
GO
--DROP FUNCTION RETURN_TABLE
--GO
CREATE FUNCTION RETURN_TABLE()
RETURNS @Test TABLE (
ID INT
)
WITH EXECUTE AS CALLER
AS
BEGIN
INSERT INTO @Test
SELECT DBO.RETURN_INT()
RETURN
END
Jeżeli masz żadnego przykładu ... mój jeden nie działa ... Dzięki –
nie są łatwo dostępne, ale spróbuję wymyślić jedną. – kemiller2002
Dzięki Kevin, to bardzo pomogłoby –