`
jiangka88
  • 浏览: 14733 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类

mssql procedure 作业 存储过程

阅读更多

前些日子客户过来个需求,是要把以前所有DB里面记录用户消费coinlog的表做统一成一样的字段(以前由于DB很多LOG表很乱)。上个礼拜把设计书写好后,今天开始写存储过程。很久没有写存储过了,上午在网上做功课下午写,还好有公司前辈高手指导算是在下班前完成了。把写的存储过程的代表性的一个记录一下,以便以后温习只用。

 

作业内容:将某DB的原来coinLog表内的某些字段根据条件复制到新表中,每一天复制前一天产生的数据,具体procedure如下:

 

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go


-- =============================================
-- Author: Jiang	
-- create Date: 2011/05/09
-- Description: 邦楽フルプラスEZコインログ出力
-- =============================================
ALTER PROCEDURE [dbo].[CopyTo_CoinEventLog_FullpE]
	
AS

BEGIN
BEGIN TRAN
	SET NOCOUNT ON;


	INSERT
		CoinEventLog_FullpE
	(
		uid,	--ユーザーID
		credit_coin,	--イベントコイン
		rest_coin,		--残りコイン
		event_cd,		--イベントコード
		event_desc,		--イベント詳細記述
		upd_nm,		--レコード更新者
		upd_pg,		--レコード更新プログラム
		upd_dt		--レコード更新時間
	)
	SELECT 
		uid,
		credit_coin,
		rest_coin,
		CASE 
			WHEN [event_cd] = 'give' OR [event_cd] = 'change' THEN 'give'
			WHEN [event_cd] = 'use' THEN 'use'
			WHEN [event_cd] = 'lost' THEN 'lost'
			WHEN [event_cd] = 'takeover' THEN 'takeover'
			WHEN [event_cd] = 'campaign' THEN 'campaign'
			ELSE ''	-- 'give','use','lost','takeover','change',campaign以外の値なら、''に設定する
		END,
		event_desc,
		upd_nm,
		upd_pg,
		upd_dt
	FROM 
		fullp_e.dbo.CoinEventLog
	--前日の1日分のコインログを抽出する
	WHERE upd_dt >= CONVERT(varchar(10), getdate() - 1, 111)
		and upd_dt < CONVERT(varchar(10), getdate(), 111)

	IF @@error<>0
		BEGIN
			rollback tran
			return
		END

COMMIT TRAN
END

0
5
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics