ALTER PROCEDURE [dbo].[checkLock] (@uvid int, @uid nvarchar(100)) WITH EXEC AS CALLER AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. --SET NOCOUNT ON; declare @size int declare @uname nvarchar(100) set @uname=@uid --print @uid --0 FETCH 语句成功。 begin --具体实现 select @size = count(*) from mLOCK where uvid=@uvid and uid=@uid -- print @size if(@size=0) begin insert into mLOCK (uvid,uid,typeid,eventid,label,status,ignition,lat,lon,radius,speed,priority) values(@uvid,@uname,1,2,' ',1,1,0.0,0.0,100,0,0) insert into mLOCK (uvid,uid,typeid,eventid,label,status,ignition,lat,lon,radius,speed,priority) values(@uvid,@uname,1,3,' ',0,1,0.0,0.0,100,150,0) end end END
---------------------------------------------------------------
ALTER PROCEDURE [dbo].[iOS_UpdateVehicleAlert] WITH EXEC AS CALLER AS --声明2个变量 declare @uvid INT declare @uid nvarchar(50) --声明一个游标mycursor,select语句中参数的个数必须要和从游标取出的变量名相同 declare mycursor cursor for select mVEHICLE.uvid,mVEHICLE.uid from mVEHICLE left join mLOCK on mVEHICLE.uvid=mLOCK.uvid where mLOCK.uvid is null --打开游标 open mycursor --从游标里取出数据赋值到我们刚才声明的2个变量中 fetch next from mycursor into @uvid,@uid --判断游标的状态 --0 fetch语句成功 ---1 fetch语句失败或此行不在结果集中 ---2被提取的行不存在 while (@@fetch_status=0) begin --显示出我们每次用游标取出的值 print '游标成功取出一条数据' print @uvid print @uid insert into mLOCK (uvid,uid,typeid,eventid,label,status,ignition,lat,lon,radius,speed,priority) values(@uvid,@uid ,1,2,' ',1,1,0.0,0.0,100,0,0) --用游标去取下一条记录 fetch next from mycursor into @uvid,@uid end --关闭游标 close mycursor --撤销游标 deallocate mycursor
----------------------------------------------------------
之前根据模版在顶部存在以下内容
USE [MobileDB] GO /****** Object: StoredProcedure [dbo].[checkLock] Script Date: 2012/11/15 17:23:00 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO
一直无法执行游标,删除之后,游标恢复正常,,目前还没搞名