当前位置:   article > 正文

sql游标使用的一个例子_写个游标

写个游标

这个是原生Sql使用游标对每次新加进来的一个区间判断是否与数据库中原有数据是否有重复的判断,最终输出1为无交集,输出0为有交集(不是指打印)。作为游标使用的一个例子。

  1. --声明一个变量
  2. declare @waterMin as numeric;
  3. declare @waterMax as numeric;
  4. --声明查询语句
  5. DECLARE @sql AS varchar(4000);
  6. SET @sql ='SELECT count(1) cout from ElectricScheme where AreaId=1 and Season=0 ';
  7. --声明一个游标用来遍历查询到的结果
  8. declare W_WaterMin CURSOR for select ElectricMin from ElectricScheme where AreaId=1 and Season=0 ;
  9. declare W_WaterMax CURSOR for select ElectricMax from ElectricScheme where AreaId=1 and Season=0;
  10. --打开游标
  11. open W_WaterMin;
  12. open W_WaterMax;
  13. --获取游标指向的数据
  14. fetch next from W_WaterMin into @waterMin;
  15. fetch next from W_WaterMax into @waterMax;
  16. --使用游标遍历集合
  17. while @@FETCH_STATUS = 0
  18. BEGIN
  19. --执行具体的操作
  20. --IF @waterMin!=0 AND @waterMax!=260
  21. --BEGIN
  22. SET @sql =@sql+ ' and ( 260 < '+ cast(@waterMin as varchar(20));
  23. SET @sql =@sql+ ' or 0 > '+ cast(@waterMax as varchar(20)) +')';
  24. --END
  25. --游标指向下一条数据
  26. FETCH next from W_WaterMin into @waterMin;
  27. FETCH next from W_WaterMax into @waterMax;
  28. END
  29. --执行sql语句
  30. print @sql;
  31. SET @sql=' select COUNT(1) result from ( '+@sql+' ) a inner join ( select COUNT(1) cout from ElectricScheme where AreaId=1 and Season=0 ) b on a.cout=b.cout '
  32. print @sql;
  33. EXEC(@sql);
  34. --关闭游标
  35. CLose W_WaterMin;
  36. cLose W_WaterMax;
  37. --释放游标
  38. DEALLOCATE W_WaterMin;
  39. DEALLOCATE W_WaterMax;

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/619437
推荐阅读
相关标签
  

闽ICP备14008679号