您的位置:首页 > 数据库

Sql游标使用2例

2011-07-26 11:49 288 查看
------------------------------------------------------
付款成功7日内无异常自动到卖家
declare @OID int
declare @SerialNumber nvarchar(100)
declare @UserID int
DECLARE @Prices_Total decimal
DECLARE @Amount decimal
declare cursor1 cursor for
SELECT [OID],[SerialNumber],[UserID],[Prices_Total] FROM [Quan_Orders] WHERE STATUS = 1 AND datediff(day,[AddTime],getdate()) > 7
open cursor1
fetch next from cursor1 into @OID,@SerialNumber,@UserID,@Prices_Total
while @@fetch_status=0
begin
DECLARE @Total decimal
SET @Total= @Prices_Total
IF (EXISTS(select Amount from Quan_Amount where UserID=@UserID))
BEGIN
select top 1 @Amount=Amount from Quan_Amount where UserID=@UserID order by id desc
SET @Total=@Total + @Amount
END
update Quan_Orders set Status=3 WHERE [SerialNumber] =@SerialNumber
INSERT INTO [Quan_Amount] ([UserID],[Type],[Detail],[Income],[Expense],[Amount],[Addtime]) VALUES (@UserID,'收入','订单:'+@SerialNumber+',收取货款',@Prices_Total,0,@Total,getdate())

fetch next from cursor1 into @OID,@SerialNumber,@UserID,@Prices_Total
end
close cursor1
deallocate cursor1
----------------------------------
退券每小时

declare @ID int
declare @BuyID int
declare @UID int
DECLARE @ExpectedPrice decimal
declare cursor1 cursor for
SELECT [ID],[BuyID],[ExpectedPrice],[UID] FROM [G_IdleCommodityLog] WHERE STATUS = 0 AND datediff(day,[AddTime],getdate())> -2
open cursor1
fetch next from cursor1 into @ID,@BuyID,@ExpectedPrice,@UID
while @@fetch_status=0
begin
update G_IdleCommodityLog set Status = 1 where id=@id
update KyUsers set yellowboy=yellowboy+@ExpectedPrice where userid=@UID
insert into yellowBoy_Detail(typeid,yellowBoy,avenueRelative,avenue,uid,addtime) values(2,@ExpectedPrice,'','退券',@UID,getdate())
update G_account set status=-2 where buyid=@BuyID
update G_buyList set status=3 where buyid=@BuyID
fetch next from cursor1 into @ID,@BuyID,@ExpectedPrice,@UID
end
close cursor1
deallocate cursor1
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: