zoukankan      html  css  js  c++  java
  • 游标

    1.需求:  话说  唐僧师徒四人,正过大雪山,  唐僧饿了,吩咐悟空去弄斋饭,悟空一个筋斗云飞开了。
                       突然,大风呼啸,雷鸣闪电,八戒和唐僧在慌乱中被雪山老妖抓走。
                      沙和尚到处寻找师徒下落无果。无奈之下,去找菩萨。
                       先前唐僧和八戒受菩萨所托,都带了一个SOS定位手表。 
                      不管在那里,只要发送SOS信号,就可以把当前的经纬度发送给菩萨。

                      这雪山老妖势力范围大,方圆几百里都是他的妖洞,还真有点能耐,  唐僧和八戒 被这个洞卷到那个洞,
                      匆匆忙忙的,唐僧和八戒在每个妖洞里,都发送了SOS求救信息。
                      弄得 菩萨都不知 唐僧的下落,。    现在要你用SQL语句把最新的SOS记录给菩萨看。
                      每人只需要显示最新的一条SOS信息。

    --  SOS求救信息,放在一个叫SOSInfo的表里面。
    CREATE TABLE SOSInfo
    ( 
    LoginID  VARCHAR(30) NOT NULL,  --用户id 目前规定在6-16个字符之间
    PosTime     VARCHAR(48) NOT NULL, --采集时间:YYYY-MM-DD HH24:MI:SS
    Latitude  VARCHAR(30) ,  --纬度       
    Longitude  VARCHAR(30) ,          --经度 
    SOSPhone        VARCHAR(16) , --sos求救号码
    IsCheck         INTEGER, --是否已经查看
    PRIMARY KEY  (LoginID,PosTime)
    ); 
    --插入几条SOS求救信息
     insert into SOSInfo([LoginID],[PosTime],[Latitude],[Longitude],[SOSPhone],[IsCheck]) 
    values('沙和尚','2013-04-17 12:11:33','23.2352635','30.2356855','15689584587',0)
    
    insert into SOSInfo([LoginID],[PosTime],[Latitude],[Longitude],[SOSPhone],[IsCheck]) 
    values('孙悟空','2013-04-17 11:11:33','23.2352635','30.2356855','15689584587',0)
    
    insert into SOSInfo([LoginID],[PosTime],[Latitude],[Longitude],[SOSPhone],[IsCheck]) 
    values('猪八戒','2013-04-17 10:11:33','23.2352635','30.2356855','15689584587',0)
    
    insert into SOSInfo([LoginID],[PosTime],[Latitude],[Longitude],[SOSPhone],[IsCheck]) 
    values('猪八戒','2013-04-19 13:11:33','23.2352635','30.2356855','15689584587',0)
    
    insert into SOSInfo([LoginID],[PosTime],[Latitude],[Longitude],[SOSPhone],[IsCheck]) 
    values('沙和尚','2013-04-17 14:11:33','23.2352635','30.2356855','13689584587',0)
    
    insert into SOSInfo([LoginID],[PosTime],[Latitude],[Longitude],[SOSPhone],[IsCheck]) 
    values('唐僧','2013-04-17 19:11:33','29.2352635','30.2356855','15789584587',0)
    
    insert into SOSInfo([LoginID],[PosTime],[Latitude],[Longitude],[SOSPhone],[IsCheck]) 
    values('唐僧','2013-04-17 11:11:33','26.2352635','30.2356855','15789584587',0)
    
    insert into SOSInfo([LoginID],[PosTime],[Latitude],[Longitude],[SOSPhone],[IsCheck]) 
    values('唐僧','2013-04-17 18:11:33','24.2352635','30.2356855','15789584587',0)
    
    --很显然,唐僧和猪八戒 耐不住 寂寞  发 SOS 求救了,但是  被妖怪这个洞搬到那个洞,
      经纬度经常改变,让没筋斗云功夫的  沙和尚 很苦恼。
    
    
    --因为数据要最后一起返回一个DataTable,而不是一个DataSet,所以我们打算用一个表变量
    
    declare @Users table
    (
        LoginID varchar(30) not null,
        PosTime varchar(48) not null,
        Latitude varchar(30) null,
        SOSPhone varchar(16)null,
        Longitude varchar(30) null,
        IsCheck int null
     );
    declare @name varchar(50) ;
    
    declare my_cursor cursor  --定义游标
    for (select distinct loginID from sosInfo) --把结果集放到游标中
    open my_cursor --打开游标
    
    fetch next from my_cursor into @name;--把第一条数据放到@name变量中
    
    while @@fetch_status=0
    begin 
        insert into @users(LoginID, PosTime, Latitude, Longitude, SOSPhone, IsCheck)
        select top 1 LoginID, PosTime, Latitude, Longitude, SOSPhone, IsCheck
        from sosinfo 
        where loginid=@name
        order by postime desc
        fetch next from my_cursor into @name
    end
        select LoginID, PosTime, Latitude, Longitude, SOSPhone, IsCheck
        from @Users
    
    close my_cursor
    deallocate my_cursor
    View Code
     1 use myschool
     2 select *from student
     3 
     4 declare @userId varchar(50);
     5 declare my_cursor cursor--定义游标
     6 for (select sid from student)--查出需要的集合放到游标中
     7 open my_cursor --打开游标
     8 fetch next from my_cursor into @userId;--将读取的第一行数据放到@userId变量中
     9 while @@fetch_status =0
    10     begin 
    11         print @userid;--打印数据,打印表中的sid
    12         --update student set sbirthday = dateadd(month,6,getdate()) where sid = @userid;--更新数据
    13         update student set sage = sage+10 where sid=@userid;
    14         fetch next from my_cursor into @userid;--读取下一行数据放到变量中
    15     end
    16 close my_cursor;--关闭游标
    17 deallocate my_cursor
    18 go
  • 相关阅读:
    UEFI启动 安装win8 win10 及windows server 2012 最简单的方法
    Android SDK中国在线更新镜像服务器 解决GOOGLE更新无法下载 更新失败的问题
    DELPHI 单元文件结构
    获取程序自身大小的2个函数
    实时获取网络时间 并转换为北京时间的函数
    部署maven的一些要点、遇到的问题
    cron表达式详解
    redhat安装xwindow环境
    tomcat执行文件权限
    一个方便的java分页算法
  • 原文地址:https://www.cnblogs.com/hejinyang/p/3055722.html
Copyright © 2011-2022 走看看