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'
我在 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'