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
@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
相关文章推荐
- cs_BannedAddresses_Get///cs_BannedNetwork_CreateUpdateDelete///cs_BannedNetworks_Get
- cs_Content_UpdateDate///cs_DisallowedName_CreateUpdateDelete///cs_DisallowedNames_Get
- cs_GetUserIDByAppToken///cs_Group_CreateUpdateDelete
- cs_Links_Get///cs_MarkPostAsRead///cs_Message_CreateUpdateDelete
- cs_Image_CreateUpdateDelete//cs_InkData_Add//cs_InkData_Delete
- cs_Censorship_CreateUpdateDelete///cs_Censorships_Get
- cs_Link_CreateUpdateDelete///cs_Link_UpdateSortOrder
- cs_Content_CreateUpdateDelete///cs_Content_GetList///cs_Content_Load
- cs_LinkCategories_Get///cs_LinkCategory_CreateUpdateDelete//cs_LinkCategory_UpdateSortOrder
- 由于“Table(T_Test)”没有主键,因此无法在其上执行 Create、Update 或 Delete 操作
- 2.php访问mysql数据库(Create Retrieve Update Delete:增删改查)
- SQL_AddDepartment / UpdateDepartment / DeleteDepartment / CreateCategory / UpdateCategory / DeleteCategory ...
- 关联关系的crud(增加(Create)、查询(Retrieve)(重新得到数据)、更新(Update)和删除(Delete))的理解(casecade和fetch)
- MySQL--操作简记(create创建操纵表、insert插入、update更新、delete删除数据)
- mongodb 的简单使用 -- create, read, update, delete (CRUD)
- MongoDB和Redis的CRUD (Create,Read,Update,Delete)
- [SQL] 简单新建(create)删除(drop\delete)权限(grant/revoke)修改(set\update)
- T-SQL(标准数据库查询语句) 在SQL Server 2008 下面的 Create、Update,Delete、Select
- XML编程(CRUD)-create read update delete(DOM解析)
- SQL Server Create/Update/Delete/Select Table/View/Procedure常见用法