表值函数刷新

时间:2017-03-31 01:55:37

标签: 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

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

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

查询:

SELECT TOP 10 * 
FROM TVF_xyz (1543)

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

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

2 个答案:

答案 0 :(得分:3)

经过一番搜索,我找到了sp_refreshsqlmodule (Transact-SQL),这是TVF的常见行为。

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

1

答案 1 :(得分:0)

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

  

以下SQL函数明确声明它返回一个TABLE。因此,隐式定义返回的行集结构。

样品

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