spAddUpdate_Condition

Parameters

Parameter Parameter Type Mode Description
@PKID int INOUT
@HTML ntext IN
@ChildConditionBlocks xml IN

Definition

Copy


            CREATE PROCEDURE [dbo].[spAddUpdate_Condition]
            (
                @PKID int output,
                @HTML ntext,
                @ChildConditionBlocks XML
            )
            AS
            BEGIN
            BEGIN TRANSACTION
            BEGIN TRY
                IF (@PKID <= 0
                BEGIN
                    INSERT INTO [dbo].[Condition]
                    (
                        [HTML]
                    )
                    VALUES
                    (
                        @HTML
                    )

                    SELECT @PKID = SCOPE_IDENTITY()
                END
                ELSE
                BEGIN
                    UPDATE [dbo].[Condition] SET [HTML] = @HTML WHERE [ID] = @PKID
                END

                DELETE FROM [dbo].[ConditionBlockParentCondition] WHERE [ParentConditionID] = @PKID

                INSERT [dbo].[ConditionBlockParentCondition]
                    ([ConditionBlockID], [ParentConditionID])
                SELECT
                    cb.cb.value('@ID', 'int'),
                    @PKID
                FROM @ChildConditionBlocks.nodes('/ConditionBlocks/ConditionBlock') cb(cb)
            END TRY
            BEGIN CATCH
                IF @@TRANCOUNT > 0
                    ROLLBACK TRANSACTION;

                EXEC usp_RethrowError;
            END CATCH

            IF @@TRANCOUNT > 0
                COMMIT;
            END