Files
Fuchs_Intranet/db/dbo.ocms_cloneItem.StoredProcedure.sql
T

105 lines
6.2 KiB
Transact-SQL

USE [site_fuchs]
GO
/****** Object: StoredProcedure [dbo].[ocms_cloneItem] Script Date: 02.12.2020 21:05:05 ******/
DROP PROCEDURE [dbo].[ocms_cloneItem]
GO
/****** Object: StoredProcedure [dbo].[ocms_cloneItem] Script Date: 02.12.2020 21:05:06 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
CREATE PROCEDURE [dbo].[ocms_cloneItem]
@old_ocms_iid bigint
,@new_parent_iid bigint
AS
BEGIN
SET NOCOUNT ON;
IF EXISTS (SELECT * from [dbo].[ocms_items] as i where i.[ocms_iid] = @old_ocms_iid)
AND EXISTS (SELECT * from [dbo].[ocms_items] as i where i.[ocms_iid] = @new_parent_iid)
BEGIN
DECLARE @NEW TABLE ([ocms_iid] bigint, [old_ocms_pid] bigint);
INSERT INTO [dbo].[ocms_items]
([parent_iid]
,[ocms_pid]
,[name]
,[view]
,[template_id]
,[hide]
,[order]
,[DateCreated]
,[DateModified])
OUTPUT inserted.[ocms_iid], inserted.[ocms_pid] INTO @new
SELECT @new_parent_iid
,[ocms_pid]
,[name]
,[view]
,[template_id]
,[hide]
,[order]
,GETUTCDATE()
,GETUTCDATE()
FROM [dbo].[ocms_items] as i
WHERE [ocms_iid] = @old_ocms_iid;
DECLARE @new_ocms_iid bigint, @old_ocms_pid bigint;
SELECT TOP(1) @new_ocms_iid = [ocms_iid], @old_ocms_pid = [old_ocms_pid] FROM @NEW;
IF NOT EXISTS (SELECT pn.* from [dbo].[ocms_properties] as pn JOIN [dbo].[ocms_properties] as po ON pn.[key] = po.[key] and pn.[locale] = po.[locale]
WHERE pn.[ocms_iid] = @new_parent_iid AND po.[ocms_pid] = @old_ocms_pid)
BEGIN
DECLARE @newprop [dbo].[ocms_type_properties_base];
DECLARE @property_key varchar(50), @locale varchar(5), @new_ocms_pid bigint;
SELECT TOP(1) @property_key = [key], @locale = [locale] FROM [dbo].[ocms_properties] as p WHERE [ocms_pid] = @old_ocms_pid;
IF ISNULL(@property_key, '') <> ''
BEGIN
INSERT INTO @newprop VALUES(@new_parent_iid, @property_key, '', @locale);
EXECUTE [dbo].[ocms_merge_properties] @newprop; --makes sure is ok with template
END
SELECT TOP(1) @new_ocms_pid = [ocms_pid] FROM [dbo].[ocms_properties] WHERE [ocms_iid] = @new_parent_iid AND [key] = @property_key;
UPDATE [dbo].[ocms_items]
SET [ocms_pid] = @new_ocms_pid
,[DateModified] = GETUTCDATE()
WHERE [ocms_iid] = @new_ocms_iid;
END
IF @new_ocms_iid is not null
BEGIN
INSERT INTO [dbo].[ocms_properties]
([ocms_iid]
,[key]
,[value]
,[locale]
,[DateCreated]
,[DateModified]
)
SELECT
@new_ocms_iid
,[key]
,[value]
,[locale]
,GETUTCDATE()
,GETUTCDATE()
FROM [dbo].[ocms_properties]
WHERE [ocms_iid] = @old_ocms_iid;
END
END
END
GO
ALTER AUTHORIZATION ON [dbo].[ocms_cloneItem] TO SCHEMA OWNER
GO