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