Table-值函数刷新

Table-valued function refresh

我在 SQL 服务器中有一个 table 值函数 (TVF),如下所示:

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

现在,我在 xyz table 中添加了一个新列。

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

查询:

SELECT TOP 10 * 
FROM TVF_xyz (1543)

我想知道如何刷新 TVF 以显示新栏目。

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

https://msdn.microsoft.com/en-us/library/bb386954(v=vs.110).aspx

The following SQL function explicitly states that it returns a TABLE. Therefore, the returned rowset structure is implicitly defined.

样本

CREATE FUNCTION ProductsCostingMoreThan(@cost money)  
RETURNS TABLE  
AS  
RETURN  
    SELECT ProductID, UnitPrice  
    FROM Products  
    WHERE UnitPrice > @cost  

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

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

EXEC sys.sp_refreshsqlmodule 'TVF_xyz'