微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

sqlserver存储过程创建

USE [master]                 GO                 SET ANSI_NULLS ON                 GO                 SET QUOTED_IDENTIFIER ON                 GO                 -- =============================================                 -- Author: **             -- Create date: 2011-06-22                 -- Description: 添加中奖记录                 -- 成功返回失败返回                 -- =============================================                 CREATE  PROCEDURE  prMgame_addPrizesRecord      @intUserId int,--用户ID                 @vchIptvName varchar(50),--IPTV名称                 @intPrizesType smallint,--周奖还是终极大奖 0:周奖 1:终极大奖                 @intPrizesNo int,--奖品编号                 @vchPrizesName varchar(50)=null output,--奖品名称                 @outPrizesNo int=0 output,--奖品编号                 @intReturnCode int=1 output,--处理返回值                 @vchMsg varchar(128)=null output --处理信息                 AS                 BEGIN                     BEGIN TRANSACTION                 DECLARE @NowTime DATETIME                 DECLARE @NowPrizesSum INT                 DECLARE @NowRank INT                 DECLARE @NowWeek smallint  --当天属于哪个星期                 DECLARE @lestWeek smallint                 SELECT @NowTime=GETDATE() FROM dbo.sysobjects   --获取系统时间                 --取得第几周                 IF NOT EXISTS (SELECT * FROM  WeekTime WHERE WeekStartTime<=@NowTime AND WeekEndTime >=@NowTime)                 BEGIN                     SET @intReturnCode=1                 SET @vchMsg='奖品添加失败,无法获取周号。'                 ROLLBACK TRANSACTION                 RETURN 1             END                 SELECT @NowWeek=WeekNo FROM  WeekTime WHERE WeekStartTime<=@NowTime AND WeekEndTime >=@NowTime                 SET @lestWeek = @NowWeek - 1                 print @lestWeek                 IF (@intPrizesType = 0)                 BEGIN                     --周奖                 IF EXISTS (SELECT * FROM PrizesRecode WHERE UserId=@intUserId AND WeekNo=@lestWeek AND PrizesType=@intPrizesType)                 BEGIN                     SET @intReturnCode=1                 SET @vchMsg='奖品添加失败,用户已经抽过奖了。'                 ROLLBACK TRANSACTION                 RETURN 1             END                 IF EXISTS (SELECT * FROM  Prizes WHERE PrizesNo=@intPrizesNo AND PrizesRemainder > 0)                 BEGIN                     --奖品数量充足                 SELECT @NowPrizesSum=PrizesRemainder,@vchPrizesName=PrizesName,@outPrizesNo=PrizesNo FROM  Prizes WHERE PrizesNo=@intPrizesNo                 SET @NowPrizesSum = @NowPrizesSum - 1                 UPDATE  Prizes SET PrizesRemainder=@NowPrizesSum WHERE PrizesNo=@outPrizesNo                 IF @@ERROR<>0                 BEGIN                     SET @intReturnCode=1                 SET @vchMsg='奖品添加失败,奖品表更新失败。'                 ROLLBACK TRANSACTION                 RETURN 1             END             END                 ELSE                 BEGIN                     --奖品数量不足                 SELECT TOP 1 @NowPrizesSum=PrizesRemainder,@outPrizesNo=PrizesNo FROM  Prizes WHERE PrizesRemainder > 0 AND PrizesType = @intPrizesType ORDER BY PrizesRemainder DESC                 SET @NowPrizesSum = @NowPrizesSum - 1                 UPDATE  Prizes SET PrizesRemainder=@NowPrizesSum WHERE PrizesNo=@outPrizesNo                 IF @@ERROR<>0                 BEGIN                     SET @intReturnCode=1                 SET @vchMsg='奖品添加失败,奖品表更新失败。'                 ROLLBACK TRANSACTION                 RETURN 1             END             END                 SELECT @NowRank=WeekRank FROM  WeekRank WHERE UserId=@intUserId AND WeekNo=@lestWeek                 INSERT INTO   PrizesRecode (UserId,IptvName,PrizesNo,PrizesType,RecodeTime,WeekNo,GameRank) VALUES (@intUserId,@vchIptvName,@outPrizesNo,@intPrizesType,@NowTime,@lestWeek,@NowRank)                 IF @@ERROR<>0                 BEGIN                     SET @intReturnCode=1                 SET @vchMsg='奖品添加失败,奖品记录表更新失败。'                 ROLLBACK TRANSACTION                 RETURN 1             END                 SET @intReturnCode=0                 SET @vchMsg='奖品获取成功'                 COMMIT TRANSACTION                 RETURN 0             END                 ELSE IF (@intPrizesType = 1)                 BEGIN                     --终极大奖                 IF EXISTS (SELECT * FROM   PrizesRecode WHERE UserId=@intUserId AND PrizesType=@intPrizesType)                 BEGIN                     SET @intReturnCode=1                 SET @vchMsg='奖品添加失败,用户已经抽过奖了。'                 ROLLBACK TRANSACTION                 RETURN 1             END                                  IF EXISTS (SELECT * FROM  Prizes WHERE PrizesNo=@intPrizesNo AND PrizesRemainder > 0)                 BEGIN                     --奖品数量充足                 SELECT @NowPrizesSum=PrizesRemainder,@outPrizesNo=PrizesNo FROM  Prizes WHERE PrizesRemainder > 0 AND PrizesType = @intPrizesType ORDER BY PrizesRemainder DESC                 SET @NowPrizesSum = @NowPrizesSum - 1                 UPDATE  Prizes SET PrizesRemainder=@NowPrizesSum WHERE PrizesNo=@outPrizesNo                 IF @@ERROR<>0                 BEGIN                     SET @intReturnCode=1                 SET @vchMsg='奖品添加失败,奖品表更新失败。'                 ROLLBACK TRANSACTION                 RETURN 1             END             END                 SELECT @NowRank=AllRank FROM   AllRank WHERE UserId=@intUserId                 INSERT INTO  PrizesRecode (UserId,@NowRank)                 IF @@ERROR<>0                 BEGIN                     SET @intReturnCode=1                 SET @vchMsg='奖品添加失败,奖品记录表更新失败。'                 ROLLBACK TRANSACTION                 RETURN 1             END                 SET @intReturnCode=0                 SET @vchMsg='奖品获取成功'                 COMMIT TRANSACTION                 RETURN 0                              END                 SET @intReturnCode=1                 SET @vchMsg='奖品添加失败,参数传入错误。'                 ROLLBACK TRANSACTION                 RETURN 1             END                                                                                                                                                                                                                                                                                               

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐