函数TSQL中的函数

D_D*_*D_D 5 sql t-sql function

我可以在表值函数中调用标量函数吗?

谢谢

kem*_*002 5

是的,只要表值函数完成后返回一个表.

用户定义的函数可以嵌套; 也就是说,一个用户定义的函数可以调用另一个.当被调用函数开始执行时,嵌套级别递增,而当被调用函数完成执行时,嵌套级别递减.用户定义的函数最多可以嵌套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
Run Code Online (Sandbox Code Playgroud)