Функция в функциональном TSQL

Я могу вызвать скалярную функцию в табличной функции?

Спасибо

5
задан D_D 8 July 2010 в 16:22
поделиться

1 ответ

Да, до тех пор, пока возвращающая табличное значение функция возвращает таблицу, когда она завершена.

Пользовательские функции могут быть вложенными; то есть одна пользовательская функция может позвони другому. Уровень вложенности увеличивается, когда вызываемая функция начинает выполнение и уменьшается, когда вызываемая функция завершает работу исполнение. Пользовательские функции могут быть вложенными до 32 уровней. Превышение максимальные уровни вложенности причин всю цепочку вызывающих функций для неудача. Любая ссылка на управляемый код из определяемого пользователем Transact-SQL функция считается за один уровень против предел вложенности 32 уровня. Методы вызывается из управляемого кода не учитываются в этом лимите.

http://msdn.microsoft.com/en-us/library/ms186755.aspx

Это очень упрощенно, но работает:

--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
5
ответ дан 14 December 2019 в 18:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: