佳木斯湛栽影视文化发展公司

主頁(yè) > 知識(shí)庫(kù) > 積分獲取和消費(fèi)的存儲(chǔ)過(guò)程學(xué)習(xí)示例

積分獲取和消費(fèi)的存儲(chǔ)過(guò)程學(xué)習(xí)示例

熱門標(biāo)簽:鐵路電話系統(tǒng) 網(wǎng)站排名優(yōu)化 AI電銷 百度競(jìng)價(jià)排名 Linux服務(wù)器 服務(wù)外包 呼叫中心市場(chǎng)需求 地方門戶網(wǎng)站

1.GM_JF客戶賬戶積分表

2. GM_JF_DETAIL客戶賬戶積分消費(fèi)記錄

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

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

復(fù)制代碼 代碼如下:

-- ===============測(cè)試=======================================================
/*
declare @StatusCode int = 1;
exec sp_GM_JF_AddScore 'admin','AN_JF_001_001',1,5,0,'',@StatusCode output
print @StatusCode
*/
-- ===========================================================================
/*
* 判斷是否重復(fù)獲取積分(首次完善個(gè)人資料,首次修改密碼等等不能重復(fù)獲取積分)
* 判斷是根據(jù) 從GM_JF_DETAIL(詳情表)查詢周期內(nèi)的數(shù)據(jù)條數(shù)與GM_JF_ACTION_RULES(動(dòng)作規(guī)則表)內(nèi)的周期重復(fù)次數(shù)對(duì)比
* 如果大于等于周期重復(fù)次數(shù),則為重復(fù)獲取積分
* 接下來(lái)
*     1.詳情表的數(shù)據(jù)入庫(kù)
*     2.判斷總積分表是否存在對(duì)應(yīng)客戶的總積分 沒(méi)有則插入一條新的,有 則讀取其數(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: 不能重復(fù)獲取
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,    --一個(gè)周期內(nèi)允許最大次數(shù)
@realFrequency     int=0,     --實(shí)際周期

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

if(@repetitionsCycle1)
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í)際周期大于周期次數(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;     --版本號(hào)

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

您可能感興趣的文章:
  • sqlserver數(shù)據(jù)庫(kù)使用存儲(chǔ)過(guò)程和dbmail實(shí)現(xiàn)定時(shí)發(fā)送郵件
  • 用存儲(chǔ)過(guò)程向數(shù)據(jù)庫(kù)存值的具體實(shí)現(xiàn)
  • MSSQL監(jiān)控?cái)?shù)據(jù)庫(kù)的DDL操作(創(chuàng)建,修改,刪除存儲(chǔ)過(guò)程,創(chuàng)建,修改,刪除表等)
  • sqlSQL數(shù)據(jù)庫(kù)怎么批量為存儲(chǔ)過(guò)程/函數(shù)授權(quán)呢?
  • mysql 導(dǎo)入導(dǎo)出數(shù)據(jù)庫(kù)以及函數(shù)、存儲(chǔ)過(guò)程的介紹
  • Oracle中 關(guān)于數(shù)據(jù)庫(kù)存儲(chǔ)過(guò)程和存儲(chǔ)函數(shù)的使用
  • sql處理數(shù)據(jù)庫(kù)鎖的存儲(chǔ)過(guò)程分享
  • SQL Server中通過(guò)擴(kuò)展存儲(chǔ)過(guò)程實(shí)現(xiàn)數(shù)據(jù)庫(kù)的遠(yuǎn)程備份與恢復(fù)
  • MSSQL MySQL 數(shù)據(jù)庫(kù)分頁(yè)(存儲(chǔ)過(guò)程)
  • 從創(chuàng)建數(shù)據(jù)庫(kù)到存儲(chǔ)過(guò)程與用戶自定義函數(shù)的小感
  • SQLserver 數(shù)據(jù)庫(kù)危險(xiǎn)存儲(chǔ)過(guò)程刪除與恢復(fù)方法
  • sqlserver關(guān)于分頁(yè)存儲(chǔ)過(guò)程的優(yōu)化【讓數(shù)據(jù)庫(kù)按我們的意思執(zhí)行查詢計(jì)劃】
  • mysql 查詢數(shù)據(jù)庫(kù)中的存儲(chǔ)過(guò)程與函數(shù)的語(yǔ)句
  • 分頁(yè)存儲(chǔ)過(guò)程(用存儲(chǔ)過(guò)程實(shí)現(xiàn)數(shù)據(jù)庫(kù)的分頁(yè)代碼)
  • 為數(shù)據(jù)庫(kù)生成某個(gè)字段充填隨機(jī)數(shù)的存儲(chǔ)過(guò)程
  • sql 判斷數(shù)據(jù)庫(kù),表,存儲(chǔ)過(guò)程等是否存在的代碼
  • Oracle存儲(chǔ)過(guò)程之?dāng)?shù)據(jù)庫(kù)中獲取數(shù)據(jù)實(shí)例
  • sqlserver 復(fù)制表 復(fù)制數(shù)據(jù)庫(kù)存儲(chǔ)過(guò)程的方法

標(biāo)簽:蘭州 仙桃 黃山 湘潭 銅川 崇左 湖南 衡水

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《積分獲取和消費(fèi)的存儲(chǔ)過(guò)程學(xué)習(xí)示例》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    明光市| 京山县| 西丰县| 泗水县| 蒲城县| 应城市| 沙坪坝区| 平江县| 铜鼓县| 贺兰县| 灵璧县| 连云港市| 孟村| 朝阳市| 上犹县| 阳山县| 咸阳市| 郴州市| 江孜县| 朝阳市| 科技| 理塘县| 鲁山县| 诸城市| 屏南县| 法库县| 台南县| 紫金县| 柘城县| 曲周县| 武鸣县| 启东市| 简阳市| 保康县| 克拉玛依市| 卓资县| 万盛区| 灯塔市| 武宁县| 宁安市| 安乡县|