小编典典

功能TSQL中的功能

sql

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

谢谢


阅读 201

收藏
2021-04-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
2021-04-22