114 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Transact-SQL
		
	
	
	
	
	
			
		
		
	
	
			114 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Transact-SQL
		
	
	
	
	
	
 | 
						|
/****** Object:  StoredProcedure [updateContent] ******/
 | 
						|
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[updateContent]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1)
 | 
						|
    DROP PROCEDURE [updateContent];
 | 
						|
GO
 | 
						|
	
 | 
						|
CREATE PROCEDURE [dbo].[updateContent]
 | 
						|
 | 
						|
(
 | 
						|
	@ContentID int,
 | 
						|
	@Number nvarchar(256)=null,
 | 
						|
	@Text nvarchar(MAX)=null,
 | 
						|
	@Type int=null,
 | 
						|
	@FormatID int=null,
 | 
						|
	@Config nvarchar(MAX)=null,
 | 
						|
	@DTS datetime,
 | 
						|
	@UserID nvarchar(100),
 | 
						|
	@LastChanged timestamp,
 | 
						|
	@newLastChanged timestamp output
 | 
						|
)
 | 
						|
AS
 | 
						|
BEGIN TRY -- Try Block
 | 
						|
	BEGIN TRANSACTION
 | 
						|
	UPDATE [Contents]
 | 
						|
		SET
 | 
						|
			[Number]=@Number,
 | 
						|
			[Text]=@Text,
 | 
						|
			[Type]=@Type,
 | 
						|
			[FormatID]=@FormatID,
 | 
						|
			[Config]=@Config,
 | 
						|
			[DTS]=@DTS,
 | 
						|
			[UserID]=@UserID
 | 
						|
		WHERE [ContentID]=@ContentID AND [LastChanged]=@LastChanged
 | 
						|
	IF @@ROWCOUNT = 0
 | 
						|
	BEGIN
 | 
						|
		IF NOT exists(select * from [Contents] WHERE [ContentID]=@ContentID)
 | 
						|
			RAISERROR('Content record has been deleted by another user', 16, 1)
 | 
						|
		ELSE           	
 | 
						|
			RAISERROR('Content has been edited by another user', 16, 1)            	
 | 
						|
	END
 | 
						|
 | 
						|
		SELECT 		@newLastChanged=[LastChanged]	
 | 
						|
		FROM [Contents] WHERE [ContentID]=@ContentID		
 | 
						|
 | 
						|
	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: updateContent Succeeded'
 | 
						|
ELSE PRINT 'Procedure Creation: updateContent Error on Creation'
 | 
						|
GO
 | 
						|
 | 
						|
/****** Object:  StoredProcedure [addContent] ******/
 | 
						|
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[addContent]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1)
 | 
						|
    DROP PROCEDURE [addContent];
 | 
						|
GO
 | 
						|
	
 | 
						|
CREATE PROCEDURE [dbo].[addContent]
 | 
						|
 | 
						|
(
 | 
						|
	@Number nvarchar(256)=null,
 | 
						|
	@Text nvarchar(MAX)=null,
 | 
						|
	@Type int=null,
 | 
						|
	@FormatID int=null,
 | 
						|
	@Config nvarchar(MAX)=null,
 | 
						|
	@DTS datetime,
 | 
						|
	@UserID nvarchar(100),
 | 
						|
	@newContentID int output,
 | 
						|
	@newLastChanged timestamp output
 | 
						|
)
 | 
						|
AS
 | 
						|
BEGIN TRY -- Try Block
 | 
						|
	BEGIN TRANSACTION
 | 
						|
	INSERT INTO [Contents]
 | 
						|
	(
 | 
						|
		[Number],
 | 
						|
		[Text],
 | 
						|
		[Type],
 | 
						|
		[FormatID],
 | 
						|
		[Config],
 | 
						|
		[DTS],
 | 
						|
		[UserID]
 | 
						|
	)
 | 
						|
	VALUES
 | 
						|
	(
 | 
						|
		@Number,
 | 
						|
		@Text,
 | 
						|
		@Type,
 | 
						|
		@FormatID,
 | 
						|
		@Config,
 | 
						|
		@DTS,
 | 
						|
		@UserID
 | 
						|
	)
 | 
						|
	SELECT @newContentID= SCOPE_IDENTITY()
 | 
						|
	SELECT 		@newLastChanged=[LastChanged]
 | 
						|
		FROM [Contents] WHERE [ContentID]=@newContentID
 | 
						|
	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: addContent Succeeded'
 | 
						|
ELSE PRINT 'Procedure Creation: addContent Error on Creation'
 | 
						|
GO
 |