SQL @@RowCount on Select statement



我有一个选择语句。我想知道这个选择语句是否返回任何行。根据记录计数,我想执行一些其他操作。

我尝试使用 @@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

最新更新