56 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Transact-SQL
		
	
	
	
	
	
			
		
		
	
	
			56 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Transact-SQL
		
	
	
	
	
	
| 
 | |
| /****** Object:  StoredProcedure [updateSession] ******/
 | |
| IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[updateSession]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1)
 | |
|     DROP PROCEDURE [updateSession];
 | |
| GO
 | |
| 	
 | |
| CREATE PROCEDURE [dbo].[updateSession]
 | |
| 
 | |
| (
 | |
| 	@SessionID int,
 | |
| 	@UserID nvarchar(100),
 | |
| 	@DTSDtart datetime,
 | |
| 	@DTSEnd datetime=null,
 | |
| 	@DTSActivity datetime,
 | |
| 	@LastChanged timestamp,
 | |
| 	@MachineName nvarchar(100),
 | |
| 	@ProcessID int,
 | |
| 	@newLastChanged timestamp output
 | |
| )
 | |
| WITH EXECUTE AS OWNER
 | |
| AS
 | |
| BEGIN TRY -- Try Block
 | |
| 	BEGIN TRANSACTION
 | |
| 	UPDATE [Sessions]
 | |
| 		SET
 | |
| 			[UserID]=@UserID,
 | |
| 			[DTSDtart]=@DTSDtart,
 | |
| 			[DTSEnd]=@DTSEnd,
 | |
| 			[DTSActivity]=@DTSActivity,
 | |
| 			[MachineName]=@MachineName,
 | |
| 			[ProcessID]=@ProcessID
 | |
| 		WHERE [SessionID]=@SessionID AND [LastChanged]=@LastChanged
 | |
| 	IF @@ROWCOUNT = 0
 | |
| 	BEGIN
 | |
| 		IF NOT exists(select * from [Sessions] WHERE [SessionID]=@SessionID)
 | |
| 			RAISERROR('Session record has been deleted by another user', 16, 1)
 | |
| 		ELSE           	
 | |
| 			RAISERROR('Session has been edited by another user', 16, 1)            	
 | |
| 	END
 | |
| 
 | |
| 		SELECT 		@newLastChanged=[LastChanged]	
 | |
| 		FROM [Sessions] WHERE [SessionID]=@SessionID		
 | |
| 
 | |
| 	IF( @@TRANCOUNT > 0 ) COMMIT
 | |
| END TRY
 | |
| BEGIN CATCH -- Catch Block
 | |
| 	IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level
 | |
|  	ELSE IF( @@TRANCOUNT > 1 ) COMMIT -- Otherwise commit.  Top level will rollback
 | |
| 	EXEC vlnErrorHandler
 | |
| END CATCH
 | |
| GO
 | |
| -- Display the status of Proc creation
 | |
| IF (@@Error = 0) PRINT 'Procedure Creation: updateSession Succeeded'
 | |
| ELSE PRINT 'Procedure Creation: updateSession Error on Creation'
 | |
| GO
 |