USE [DLPtro]
GO
/****** Object: StoredProcedure [dbo].[Pr_Area_Update] Script Date: 11/17/2003 20:40:31 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- 作者: 李海波
-- 建立时间: 2000年5月11日 11:06
-- 功能描述: 更新指定ID的地区信息
-- =============================================
ALTER PROCEDURE [dbo].[Pr_Area_Update]
--参数
@ErrorCode Varchar(1) Output ,
@Area_ID int,
@Area_Name varchar(30),
@Area_Parent_ID int,
@Area_Encoding varchar(30),
@Area_AreaLevel_ID int,
@Area_Remark varchar(500),
@Area_State int,
@Area_Timestamp timestamp Output
AS
--判断需要更新的ID是否存在
IF EXISTS (SELECT * FROM B_Area WHERE Area_ID = @Area_ID and Area_State = 1)
BEGIN
--判断需要名称是否已经使用
IF NOT EXISTS(SELECT * FROM B_Area WHERE Area_ID <> @Area_ID AND Area_Name = @Area_Name and Area_State = 1)
BEGIN
--判断是否当前时间戳
IF EXISTS(select * FROM B_Area WHERE Area_ID = @Area_ID and Area_Timestamp=@Area_Timestamp)
BEGIN
--启动事务
BEGIN TRANSACTION
--使用错误处理机制
BEGIN TRY
UPDATE B_Area
SET
Area_Name=@Area_Name
, Area_ParentID = @Area_Parent_ID
, Area_Encoding = @Area_Encoding
, Area_AreaLevel_ID = @Area_AreaLevel_ID
, Area_Remark = @Area_Remark
, Area_State = @Area_State
WHERE Area_ID = @Area_ID
END TRY
--处理错误
BEGIN CATCH
--回滚数据
ROLLBACK TRANSACTION
SELECT @ErrorCode = 'R'
RETURN 0
END CATCH
--Z执行成功 提交事务
COMMIT TRANSACTION
SELECT @ErrorCode = 'S'
RETURN 1
END
ELSE
BEGIN
select @ErrorCode='Y' --当前值正在修改
RETURN 4
END
END
--当前名称已经使用
ELSE
BEGIN
SELECT @ErrorCode = 'C'
RETURN 3
END
END
--当前ID在数据库中不存在
ELSE
BEGIN
SELECT @ErrorCode = 'N'
RETURN 2
END

被折叠的 条评论
为什么被折叠?



