麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 數(shù)據(jù)庫 > SQL Server > 正文

積分獲取和消費的存儲過程學習示例

2024-08-31 01:02:01
字體:
來源:轉載
供稿:網(wǎng)友

1.GM_JF客戶賬戶積分表

2. GM_JF_DETAIL客戶賬戶積分消費記錄

3. GM_JF_ACTION _RULES積分動作規(guī)則表

4.GM_JF_GOODS _RULES積分商品規(guī)則表

復制代碼 代碼如下:


-- ===============測試=======================================================
/*
declare @StatusCode int = 1;
exec sp_GM_JF_AddScore 'admin','AN_JF_001_001',1,5,0,'',@StatusCode output
print @StatusCode
*/
-- ===========================================================================
/*
* 判斷是否重復獲取積分(首次完善個人資料,首次修改密碼等等不能重復獲取積分)
* 判斷是根據(jù) 從GM_JF_DETAIL(詳情表)查詢周期內(nèi)的數(shù)據(jù)條數(shù)與GM_JF_ACTION_RULES(動作規(guī)則表)內(nèi)的周期重復次數(shù)對比
* 如果大于等于周期重復次數(shù),則為重復獲取積分
* 接下來
*     1.詳情表的數(shù)據(jù)入庫
*     2.判斷總積分表是否存在對應客戶的總積分 沒有則插入一條新的,有 則讀取其數(shù)據(jù),并更新
*
*/
ALTER PROCEDURE [dbo].[sp_GM_JF_AddScore]
@ACCOUNT_ID     varchar(30),
@JF_CategoryNumber varchar(15),
@CARD_NUM     int,
@HQ_JF_AMOUNT     int,
@State     varchar(16),
@USE_DESC     varchar(400),

@StatusCode     int output     -- 狀態(tài)碼: 0:失敗 1:成功 2: 不能重復獲取
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;

declare
@repetitionsCycle     float=0,    --周期(天)
@repetitionsCycle_second    int=0,--周期(秒)
@repetitionsFrequency     int=0,    --一個周期內(nèi)允許最大次數(shù)
@realFrequency     int=0,     --實際周期

@USE_DATE     datetime = GETDATE();
--是否重復獲取積分
select top(1) @repetitionsCycle=RepetitionsCycle,@repetitionsFrequency=RepetitionsFrequency from GM_JF_ACTION_RULES where AN_CategoryNumber=@JF_CategoryNumber;

if(@repetitionsCycle<1)
BEGIN
set @repetitionsCycle_second = (@repetitionsCycle-1)*24*60*60;
select @realFrequency=COUNT(1) from GM_JF_DETAIL where ACCOUNT_ID=@ACCOUNT_ID and JF_CategoryNumber=@JF_CategoryNumber and USE_DATE <= @USE_DATE and USE_DATE >= CONVERT(varchar(19),DATEADD(SECOND,-@repetitionsCycle_second,@USE_DATE),120)
END
ELSE
BEGIN
select @realFrequency=COUNT(1) from GM_JF_DETAIL where ACCOUNT_ID=@ACCOUNT_ID and JF_CategoryNumber=@JF_CategoryNumber and USE_DATE <= @USE_DATE and USE_DATE >= CONVERT(varchar(10),DATEADD(DAY,-(@repetitionsCycle-1),@USE_DATE),120)
END   

if(@realFrequency>=@repetitionsFrequency)    --實際周期大于周期次數(shù)
begin
set @StatusCode = 2;
return 2;
end

declare @count int = 0;     --數(shù)據(jù)條數(shù)
declare @temp_table table    --表變量
(
ACCOUNT_ID varchar(30),
JF_AMOUNT decimal(16,2),
TTL_JF_AMOUNT decimal(16,2),
Last_Update_Time datetime,
[Version] int
);

begin tran;
--插入詳情
insert into GM_JF_DETAIL
(ACCOUNT_ID,JF_CategoryNumber,CARD_NUM,HQ_JF_AMOUNT,[State],USE_DESC)
values
(@ACCOUNT_ID,@JF_CategoryNumber,@CARD_NUM,@HQ_JF_AMOUNT,@State,@USE_DESC)

--填充表變量
insert into @temp_table select ACCOUNT_ID,JF_AMOUNT,TTL_JF_AMOUNT,Last_Update_Time,[Version] from GM_JF where ACCOUNT_ID=@ACCOUNT_ID
select @count = count(1) from @temp_table;
--判斷并更新總積分(0:添加 其他:修改)
IF(@count=0)
begin
insert into GM_JF(ACCOUNT_ID,JF_AMOUNT,TTL_JF_AMOUNT)
values
(@ACCOUNT_ID,@HQ_JF_AMOUNT,@HQ_JF_AMOUNT)
end
else
begin
declare @JF_AMOUNT int,     --總積分
@TTL_JF_AMOUNT int,    --可用積分
@Version int;     --版本號

select @JF_AMOUNT=JF_AMOUNT,@TTL_JF_AMOUNT=TTL_JF_AMOUNT,@Version=[Version] from @temp_table where ACCOUNT_ID=@ACCOUNT_ID;

update GM_JF set JF_AMOUNT=(@JF_AMOUNT+@HQ_JF_AMOUNT),TTL_JF_AMOUNT=(@TTL_JF_AMOUNT+@HQ_JF_AMOUNT),Last_Update_Time=GETDATE(),[Version]=(@Version+1) where ACCOUNT_ID=@ACCOUNT_ID
end

Commit tran;
set @StatusCode = 1;

IF(@@ERROR<>0)
BEGIN
set @StatusCode = 0;
ROLLBACK tran;
END
END

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 欧美一级黄色片在线观看 | 一本色道久久99精品综合蜜臀 | 成年人免费黄色片 | 国产精品久久久免费观看 | 中文字幕在线永久 | 久久撸视频 | 久久综合久久美利坚合众国 | h色视频网站 | 在线亚洲欧美 | 欧美日本综合 | 国产成人av免费看 | 国产色视频一区 | 精品国产一区二区三区久久久蜜月 | 亚洲日色 | 成人毛片免费 | 狠狠操天天射 | a级在线 | 色猫av| 午夜精品久久久久久久99热浪潮 | 深夜视频福利 | 国产在线精品一区二区夜色 | 91精品国产乱码久久桃 | 久久久久亚洲美女啪啪 | 久久精品国产99国产精品亚洲 | 羞羞的视频免费观看 | 成人在线观看免费 | 国产老师做www爽爽爽视频 | 欧美极品欧美精品欧美视频 | 久久久久九九九女人毛片 | 久久久久久久午夜 | 国产精品视频导航 | 久草在线资源福利站 | 毛片免| 久久精品23 | 粉嫩粉嫩一区二区三区在线播放 | 在线看一区二区三区 | 免费国产在线视频 | 久久久久久久亚洲视频 | 久久99在线| 欧美性受ⅹ╳╳╳黑人a性爽 | 日韩视频在线一区二区三区 |