我有一个选择语句。我想知道这个选择语句是否返回任何行。根据记录计数,我想执行一些其他操作。
我尝试使用 @@RowCount
来获取计数,但它似乎无法与 select 语句正常工作。
关于如何使用它的任何建议,或者我在选择后可以执行我的发布任务的任何其他方式。
select
isnull(TotalHoursWorkedAmount, 0) / 26
from
EmployeeStatus ESI
where
ESI.EmployeeCode = @employee_id
添加另一件
if @@ROWCOUNT=0
SELECT dbo.fxGetAverage(@employee_id)
@@ROWCOUNT
确实适用于选择语句。 你没有表现出你的尝试,所以我真的不能说你做错了什么。
但无论如何,这将提供行计数作为示例:
select isnull(TotalHoursWorkedAmount, 0) / 26
from EmployeeStatus ESI
where ESI.EmployeeCode = @employee_id
select @@rowcount
或将其存储在变量中:
declare @myCount int
select isnull(TotalHoursWorkedAmount, 0) / 26
from EmployeeStatus ESI
where ESI.EmployeeCode = @employee_id
set @myCount = @@rowcount
正如其他人所说,如果这只是一个真/假的问题 - 而不是做x
如果y
行数,z
如果v
行数 - 那么你最好做一个存在,除非你真的需要选择的结果。
if exists (
select 1
from EmployeeStatus ESI
where ESI.EmployeeCode = @employee_id
)
begin
print 'do stuff'
end
由于某种原因您无法@@rowcount
工作,您可以使用此查询来检查您是否得到任何结果。 使用 if 语句。
if not exists(select isnull(TotalHoursWorkedAmount, 0) / 26 from EmployeeStatus ESI where ESI.EmployeeCode = @employee_id)
begin
SELECT dbo.fxGetAverage(@employee_id)
end