在repeatable()语句中使用当前日期?

gz5pxeao  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(274)

我正在构建一个存储过程,我们将每天运行一次,以对数据进行采样并查找异常。如果发现异常,我希望样品是可重复的,这样我就可以进行更深入的分析。
为此,我使用了 tablesample() repeatable() 声明:

select * 
from DataTable tablesample(50 rows) repeatable(cast(getdate() as int));

这会产生错误:
表“datatable”的tablesample子句中的行值或可重复种子无效。值或种子必须是整数。
我也试过用 convert(int, getdate()) 相反,没有用。我还确认了在语句中使用纯整数文本是有效的。

dtcbnfnu

dtcbnfnu1#

不能在那里使用变量或表达式。只有整数文本。您可以始终使用动态sql。如

declare @seed int = cast(getdate() as int)
declare @sql nvarchar(max) = concat('SELECT * FROM Person.Person TABLESAMPLE (10 PERCENT) REPEATABLE (',@seed,');')

exec (@sql)

相关问题