表值函数刷新

Ash*_*Ash 5 sql-server database-metadata

我在SQL Server中有一个表值函数(TVF),如下所示:

CREATE FUNCTION TVF_xyz(@AuditKey INT)
RETURNS TABLE
AS
    RETURN
        SELECT *
        FROM xyz 
        WHERE AUDIT_KEY = @AuditKey
GO
Run Code Online (Sandbox Code Playgroud)

现在,我在xyz表中添加了新列。

当我使用查询时TVF_xyz,它不会显示新列(显示除新添加的列以外的所有其他列)。

查询:

SELECT TOP 10 * 
FROM TVF_xyz (1543)
Run Code Online (Sandbox Code Playgroud)

我想知道,如何刷新TVF以显示新列。

PS:Select *用于TVF中以获取所有列。

Ash*_*Ash 7

经过一番搜索,我发现了sp_refreshsqlmodule (Transact-SQL),它是 TVF 的常见行为。

为了刷新TVF,需要执行以下SP:

EXEC sys.sp_refreshsqlmodule 'TVF_xyz'
Run Code Online (Sandbox Code Playgroud)