【发布时间】:2018-11-16 02:23:05
【问题描述】:
我浏览了无数关于在 sql 脚本中声明/设置变量的帖子。但大多数似乎涉及语法错误或使用 exec 命令。我试图执行的脚本非常简单——所以我很难理解为什么我不能设置值。
这里是 SQL:
declare @counter int = 1,
@batchSize int = 100000,
@tableRows int,
@totalBatches int;
set @tableRows= (select count(distinct chFileVersionID) from IRISDocuments)
set @totalBatches = (ceiling((@tableRows / @batchSize)));
--print some stuff
while @counter <= @totalBatches
begin
. . . loop logic that only uses @counter variable for incrementing
end
我得到的错误是
必须声明标量变量“@tableRows”
上面已明确声明。我尝试使用 select 语句设置值,以及单独声明每个变量,并在同一语句中声明和设置值但无济于事。
【问题讨论】:
-
尝试在 WHILE 之前执行初始的 DECLARE 和 SET 部分。就这样运行成功了吗?
-
您的代码的第一部分工作得很好,似乎错误来自您的问题中未提供的其余代码中的一行。
-
我猜这可以在不使用循环的情况下重写。它不仅可以解决您的变量问题,而且维护起来会更快、更容易。
-
SQL Server 的哪个版本?
-
同意@Sami 在我的桌子上尝试了你的代码,它工作得很好。您的打印被注释掉的地方。只需打印两个或所有变量并查看它们的值。
标签: sql sql-server tsql