Sql server 2005 ue。例如,在insert中,在定义要插入的列(而不是select中的列)时更改初始表会导致问题
最后,您不应该在开始时用sp命名存储过程。系统进程从sp开始,SQL Server将首先在那里查找进程,然后再查看用户进程。每次调用proc都有点浪费时间。总的来说,这对系统是有害的,如果他们碰巧有一个同名的系统进程,你的进程将永远不会被调用 您使用的是什么数据库系统(SQL、Oracle等)SQL Server 2005。现在添加到问题中。不仅解决方案非常有用,还有提高代码质量的提示!!Sql server 2005 ue。例如,在insert中,在定义要插入的列(而不是select中的列)时更改初始表会导致问题,sql-server-2005,stored-procedures,error-handling,return-value,return,Sql Server 2005,Stored Procedures,Error Handling,Return Value,Return,最后,您不应该在开始时用sp命名存储过程。系统进程从sp开始,SQL Server将首先在那里查找进程,然后再查看用户进程。每次调用proc都有点浪费时间。总的来说,这对系统是有害的,如果他们碰巧有一个同名的系统进程,你的进程将永远不会被调用 您使用的是什么数据库系统(SQL、Oracle等)SQL Server 2005。现在添加到问题中。不仅解决方案非常有用,还有提高代码质量的提示!! PROCEDURE [dbo].[sp_ProjectBackup_Insert] @prj_id
PROCEDURE [dbo].[sp_ProjectBackup_Insert]
@prj_id bigint
AS
BEGIN
DECLARE @MSG varchar(200)
DECLARE @TranName varchar(200)
DECLARE @return_value int
-- 1. Starting the transaction
begin transaction @TranName
-- 2. Insert the records
SET IDENTITY_INSERT [PMS_BACKUP].[Common].[PROJECT] ON INSERT INTO [PMS_BACKUP].[Common].[PROJECT] ([PRJ_ID],[PRJ_NO1],[PRJ_NO2],[PRJ_NO3],[PRJ_DESC],[IS_TASKFORCE],[DATE_CREATED],[IS_APPROVED],[DATE_APPROVED],[IS_HANDEDOVER],[DATE_HANDEDOVER],[DATE_START],[DATE_FINISH],[YEAR_OF_ORDER],[CLIENT_DETAILS],[SCOPE_OF_WORK],[IS_PROPOSAL],[PRJ_MANAGER],[PRJ_NAME],[MANAGER_VALDEL],[MANAGER_CLIENT],[DEPT_ID],[locationid],[cut_off_date]) SELECT * FROM [pms].[Common].[PROJECT] T WHERE T.PRJ_ID = (@prj_id) SET IDENTITY_INSERT [PMS_BACKUP].[Common].[PROJECT] OFF IF @@ERROR <> 0 GOTO HANDLE_ERROR
SET IDENTITY_INSERT [PMS_BACKUP].[Common].[DEPARTMENT_CAP] ON INSERT INTO [PMS_BACKUP].[Common].[DEPARTMENT_CAP] ([CAP_ID],[DEPT_ID],[PRJ_ID],[IS_CAPPED],[DATE_CAPPED],[CAPPED_BY],[CAP_APPROVED_BY],[STATUS],[UNCAPPED_BY],[DATE_UNCAPPED],[DESCRIPTION],[UNCAP_APPROVED_BY],[LOCATIONID]) SELECT * FROM [pms].[Common].[DEPARTMENT_CAP] T WHERE T.PRJ_ID = (@prj_id) SET IDENTITY_INSERT [PMS_BACKUP].[Common].[DEPARTMENT_CAP] OFF IF @@ERROR <> 0 GOTO HANDLE_ERROR
INSERT INTO [PMS_BACKUP].[Common].[DOC_REG] SELECT * FROM [pms].[Common].[DOC_REG] T WHERE T.PRJ_ID = (@prj_id) IF @@ERROR <> 0 GOTO HANDLE_ERROR
-- 3. Commit transaction
COMMIT TRANSACTION @TranName;
return @@trancount;
HANDLE_ERROR:
rollback transaction @TranName
RETURN 1
END
PROCEDURE [dbo].[sp_ProjectBackup_Insert]
@prj_id bigint
AS
BEGIN
DECLARE @MSG varchar(200)
DECLARE @TranName varchar(200)
DECLARE @return_value int
-- 1. Starting the transaction
BEGIN TRANSACTION @TranName
-- 2. Insert the records
BEGIN TRY
SET IDENTITY_INSERT [PMS_BACKUP].[Common].[PROJECT] ON INSERT INTO [PMS_BACKUP].[Common].[PROJECT] ([PRJ_ID],[PRJ_NO1],[PRJ_NO2],[PRJ_NO3],[PRJ_DESC],[IS_TASKFORCE],[DATE_CREATED],[IS_APPROVED],[DATE_APPROVED],[IS_HANDEDOVER],[DATE_HANDEDOVER],[DATE_START],[DATE_FINISH],[YEAR_OF_ORDER],[CLIENT_DETAILS],[SCOPE_OF_WORK],[IS_PROPOSAL],[PRJ_MANAGER],[PRJ_NAME],[MANAGER_VALDEL],[MANAGER_CLIENT],[DEPT_ID],[locationid],[cut_off_date]) SELECT * FROM [pms].[Common].[PROJECT] T WHERE T.PRJ_ID = (@prj_id) SET IDENTITY_INSERT [PMS_BACKUP].[Common].[PROJECT] OFF IF @@ERROR <> 0 GOTO HANDLE_ERROR
SET IDENTITY_INSERT [PMS_BACKUP].[Common].[DEPARTMENT_CAP] ON INSERT INTO [PMS_BACKUP].[Common].[DEPARTMENT_CAP] ([CAP_ID],[DEPT_ID],[PRJ_ID],[IS_CAPPED],[DATE_CAPPED],[CAPPED_BY],[CAP_APPROVED_BY],[STATUS],[UNCAPPED_BY],[DATE_UNCAPPED],[DESCRIPTION],[UNCAP_APPROVED_BY],[LOCATIONID]) SELECT * FROM [pms].[Common].[DEPARTMENT_CAP] T WHERE T.PRJ_ID = (@prj_id) SET IDENTITY_INSERT [PMS_BACKUP].[Common].[DEPARTMENT_CAP] OFF IF @@ERROR <> 0 GOTO HANDLE_ERROR
INSERT INTO [PMS_BACKUP].[Common].[DOC_REG] SELECT * FROM [pms].[Common].[DOC_REG] T WHERE T.PRJ_ID = (@prj_id) IF @@ERROR <> 0 GOTO HANDLE_ERROR
-- 3. Commit transaction
COMMIT TRANSACTION @TranName;
RETURN 0
END TRY
BEGIN CATCH
--HANDLE_ERROR
ROLLBACK TRANSACTION @TranName
RETURN 1
END CATCH
END