您的位置:首页 > 其它

cs_BannedAddress_CreateUpdateDelete

2006-09-04 11:16 441 查看
ALTER Procedure [dbo].[cs_BannedAddress_CreateUpdateDelete]
@SettingsID INT
, @NetworkAddress NVARCHAR(50)
, @BannedDate DATETIME
, @ActionType INT --活动类型
AS
DECLARE @ID INT
DECLARE @ERROR INT
DECLARE @ROWCOUNT INT

-- CREATE
--判断不同的活动类型
IF @ActionType = 0
BEGIN
IF EXISTS( SELECT * FROM cs_BannedAddresses where SettingsID = @SettingsID and NetworkAddress = @NetworkAddress )
exec cs_BannedAddress_CreateUpdateDelete @SettingsID, @NetworkAddress, @BannedDate, 1
else
BEGIN --如果不存在于表中,插入此数据记录

INSERT INTO cs_BannedAddresses VALUES( @SettingsID, @NetworkAddress, @BannedDate )

SELECT @ERROR = @@ERROR, @ID = @@IDENTITY, @ROWCOUNT = @@ROWCOUNT
IF( @ERROR <> 0 ) --如果错误则创建错误信息
BEGIN
RAISERROR( 'An error occurred while trying to create a new cs_BannedAddress record.', 16, 1 )
RETURN @ERROR
END
ELSE
BEGIN --成功返回0
RETURN 0
END
END
END
ELSE IF( @ActionType = 1 )
BEGIN
-- UPDATE
IF NOT EXISTS( SELECT * FROM cs_BannedAddresses WHERE SettingsID = @SettingsID and NetworkAddress = @NetworkAddress )
exec cs_BannedAddress_CreateUpdateDelete @SettingsID, @NetworkAddress, @BannedDate, 0
ELSE
BEGIN
UPDATE cs_BannedAddresses SET
SettingsID = @SettingsID,
NetworkAddress = @NetworkAddress,
BannedDate = @BannedDate
WHERE
SettingsID = @SettingsID
AND NetworkAddress = @NetworkAddress
SELECT @ERROR = @@ERROR, @ID = @@IDENTITY, @ROWCOUNT = @@ROWCOUNT
IF( @ERROR <> 0 )
BEGIN --有错误则创建错误信息
RAISERROR('Could not update the cs_BannedAddress record for SettingsID %d and NetworkAddress of %d', 16, 1, @SettingsID, @NetworkAddress )
RETURN @ERROR
END
ELSE
BEGIN --成功返回0
RETURN 0
END
END
END
ELSE IF( @ActionType = 2 )
BEGIN
-- DELETE
DELETE cs_BannedAddresses
WHERE SettingsID = @SettingsID
AND NetworkAddress = @NetworkAddress

SELECT @ERROR = @@ERROR, @ID = @@IDENTITY, @ROWCOUNT = @@ROWCOUNT
IF( @ROWCOUNT = 1 ) --如果操作成功返回0
RETURN 0
ELSE
RETURN 1

END
ELSE
BEGIN --如果活动类型不在0和2之间,则创建错误消息
RAISERROR( 'The ActionType value should be between 0 and 2. The value of %d was not within this range', 16, 1, @ActionType )
RETURN 1
END

GO
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐