≡
  • 网络编程
  • 数据库
  • CMS技巧
  • 软件编程
  • PHP笔记
  • JavaScript
  • MySQL
位置:首页 > 数据库 > SQL Server

sql server 游标的简单示例

人气:508 时间:2018-09-25

这篇文章主要为大家详细介绍了sql server 游标的简单示例,具有一定的参考价值,可以用来参考一下。

感兴趣的小伙伴,下面一起跟随四海网的小编罗X来看看吧。
SQL代码如下:

alter procedure p_SlideAvg
(
@CityStr nvarchar(400),--城市字符串
@StationID nvarchar(10),--站点编号
@Type nvarchar(10),--类型
@sDate datetime, --开始时间
@eDate datetime    --结束时间
)
--set @CityStr='06'
--set @Type='O3'
--set @sDate='2008-03-20'
--set @eDate='2008-04-20'
as
declare @CityID nvarchar(10) --城市ID
--declare @StationID nvarchar(10)--站点ID
declare @channel_num nvarchar(10)--类型的channel_num

--先删除数据
declare @sqlD nvarchar(1000)
set @sqlD='delete from TAB_SlideAvg where stationID='''+@StationID+''' and Date_Time>='''+convert(varchar,@sDate,120)+''' and date_time<='''+convert(varchar,@eDate,120)+''''
exec sp_executesql @sqlD

declare C_SlideAvg cursor for select a.id as CityID,b.id as StationId,c.channel_num from TAB_BASE_GROUP as a,TAB_STATION_BASEINFO as b,
tab_channel_baseinfo as c where a.id=b.group_id and b.id=c.station_id  
and upper(c.channel_name)=upper(@Type) 
and b.id=@StationID
and c.channel_state = 1
open C_SlideAvg --打开游标
fetch next from C_SlideAvg into @CityID,@StationID,@channel_num
while(@@fetch_status=0)
begin
------------------------------------------------------------------------------------------------------------------------------

declare @days int --间隔的天数
declare @i int
set @i=0
set @days=datediff(day,@sDate,@eDate)
declare @mDate datetime
--开始循环日期相加
while @i<@days
begin
    set @i=@i+1
    set @mDate=DATEADD(day,@i,@sDate) --循环的每一天的变量     print convert(varchar,@mDate,120)
    declare @h int
    set @h=0
    while @h<24--循环24小时
    begin
        declare @h24 datetime
        --set @h24=DATEADD(Hour,@h,@mDate)
        set @h24=dateadd(second,59,dateadd(minute,59,dateadd(hour,@h,@mDate)))--时间添加上@h个小时 59分59秒 
        declare @oldH datetime
        set @oldH=DATEADD(Hour,-7,@h24) --当前小时数 减去7小时
        declare @sql1 nvarchar(1000)
        declare @slideAvg real
        set @sql1='select @slideAvg=avg(val) from S'+@StationID+'HN where channel_num='''+@channel_num+''' and date_time>='''+convert(nvarchar,@oldH,120)+''' and date_time<='''+convert(nvarchar,@h24,120)+''''
        exec sp_executesql @sql1,N'@slideAvg real output',@slideAvg output
        IF @slideAvg IS NOT NULL AND @slideAvg<>''
        begin
            declare @sql2 nvarchar(1000)
            set @sql2='insert into Tab_Slideavg values('''+@CityID+''','''+@StationID+''','''+@channel_num+''','''+convert(varchar,@h24,120)+''','''+convert(varchar,@slideAvg,120)+''')'
            exec sp_executesql @sql2
        end
        set @h=@h+1 --时间每次循环+1
    end
end

-------------------------------------------------------------------------------------------------------------------------------
fetch next from C_SlideAvg into @CityID,@StationID,@channel_num --取下一条记录
end
close C_SlideAvg--关闭游标
deallocate C_SlideAvg--销毁游标


---- 来自www.q1010.com 

本文来自:http://www.q1010.com/179/1613-0.html

注:关于sql server 游标的简单示例的内容就先介绍到这里,更多相关文章的可以留意四海网的其他信息。

关键词:游标

您可能感兴趣的文章

  • sql server 游标实例:循环表内数据,并根据参数 查询其他表内数据,拼接SQL 插入另一个表示例
  • sql server 用游标循环更新Gis记录的简单示例
  • sql server 利用游标搜索一个数据库内所有表固定类型的字段
  • sql server 在游标内循环获取手机号字符串进行拼接示例
上一篇:sql server 游标实例:循环表内数据,并根据参数 查询其他表内数据,拼接SQL 插入另一个表示例
下一篇:sql server 查询表内重复字段的简单示例
热门文章
  • SQL Server SQL获取第一条记录的方法
  • SQL Server出现System.OutOfMemoryException异常的解决方法
  • SQL Server的 update from 语句的简单示例
  • SQL Server 数据库备份方法菜鸟教程
  • SQL Server 多表关联时在where语句中慎用trim()方法
  • SQL Server数据类型及长度限制详细说明
  • mybaits非配置原因,导致SqlSession was not registered for synchronization异常解析
  • SQL Server 收缩后对数据库的使用有影响吗?
  • SQL Server 格式导致的Excel导入sql出现异常的解决方法
  • SQL Server 连接服务器出现错误 7391的解决方法
  • 最新文章
    • SQL Server存储过程基本语法的简单示例
    • sql查询时增加自动编号和分页的简单示例
    • sql轻松应付百万数据的高效数据分页存储过程的简单示例
    • sql获取一条数据中所有字段的名称和值的实现方法
    • sql分割函数的简单示例
    • SQL Server异常捕获的简单示例
    • SQL SERVER回滚恢复误操作数据的实现方法
    • SQL Server函数或存储过程中抛出异常的实现方法
    • SQL Server创建数据库的完整代码
    • SQL Server创建数据库的命令用法示例

四海网收集整理一些常用的php代码,JS代码,数据库mysql等技术文章。