MS Collected Script
This commit is contained in:
226
01_IDB/StructureNode.sql
Normal file
226
01_IDB/StructureNode.sql
Normal file
@@ -0,0 +1,226 @@
|
||||
-- =============================================
|
||||
-- Author: DD MS
|
||||
-- Changed:
|
||||
-- =============================================
|
||||
--CREATE PROCEDURE PRIDB_NEW_DYNAMIC_FOLDER_FOR_OBJECT
|
||||
|
||||
DECLARE @pIDB_OBJ_ID BIGINT, @pDYNAMIC_FOLDER VARCHAR(900),@pWHO VARCHAR(100),@pLANG_CODE VARCHAR(5)
|
||||
--AS
|
||||
SET @pIDB_OBJ_ID = 10026
|
||||
SET @pDYNAMIC_FOLDER = 'DIGITAL DATA\Geschäftsprozess\Projekte\Zooflow\Entwicklung\Dynamischer Ordner'
|
||||
DECLARE
|
||||
@FOLD_PART VARCHAR(250)
|
||||
BEGIN
|
||||
|
||||
DECLARE @FOLDER_DEPTH TINYINT,@FOLDER_PART VARCHAR(900)
|
||||
SET @FOLDER_DEPTH = 0
|
||||
DECLARE @PARENT_OBJ_ID BIGINT
|
||||
--SPLIT FOR FOLDER PARTS
|
||||
DECLARE cursSplitFolder CURSOR FOR
|
||||
SELECT Item FROM [dbo].[FN_SPLIT_STRING] (@pDYNAMIC_FOLDER,'\')
|
||||
OPEN cursSplitFolder
|
||||
FETCH NEXT FROM cursSplitFolder INTO @FOLD_PART
|
||||
WHILE @@FETCH_STATUS = 0
|
||||
BEGIN
|
||||
--EACH FOLDER PART WORKED SEPERATELY
|
||||
IF @FOLDER_DEPTH = 0
|
||||
BEGIN
|
||||
SET @PARENT_OBJ_ID = 0
|
||||
SET @FOLDER_PART = @FOLD_PART
|
||||
END
|
||||
ELSE
|
||||
BEGIN
|
||||
SET @FOLDER_PART += '\' + @FOLD_PART
|
||||
END
|
||||
PRINT '##############################'
|
||||
PRINT '@FOLDER_PART: ' + @FOLDER_PART
|
||||
DECLARE @PATH_PART_ID BIGINT,@FOLDER_PART_ID BIGINT
|
||||
EXEC PRIDB_NEW_TERM 'VARCHAR',@FOLD_PART,@pWHO,@TERM_ID = @PATH_PART_ID OUTPUT;
|
||||
--EXEC PRIDB_NEW_TERM 'VARCHAR',@FOLDER_PART,'DD MS',@TERM_ID = @FOLDER_PART_ID OUTPUT;
|
||||
DECLARE @FOLD_PART_IDB_OBJ_ID BIGINT
|
||||
IF NOT EXISTS(SELECT * FROM VWIDB_STRUCTURE_NODES WHERE TERM_GUID = @PATH_PART_ID AND PARENT_OBJ_ID = @PARENT_OBJ_ID)
|
||||
BEGIN
|
||||
PRINT 'FOLDER-PART ' + @FOLD_PART + ' muss angelegt werden'
|
||||
EXEC PRIDB_NEW_OBJECT 'DYNAMIC_FOLDER',@pWHO,0, @PARENT_OBJ_ID, @IDB_OBJ_ID = @FOLD_PART_IDB_OBJ_ID OUTPUT;
|
||||
DECLARE @NEW_OBJ_MD_ID BIGINT
|
||||
EXEC PRIDB_NEW_OBJ_DATA @FOLD_PART_IDB_OBJ_ID, 'VIRTUAL_FOLDER_PART', @pWHO, @FOLD_PART, @pLANG_CODE, 0, @OMD_ID = @NEW_OBJ_MD_ID OUTPUT
|
||||
END
|
||||
ELSE
|
||||
BEGIN
|
||||
SELECT @FOLD_PART_IDB_OBJ_ID = MAX(IDB_OBJ_ID) FROM VWIDB_STRUCTURE_NODES WHERE TERM_GUID = @PATH_PART_ID AND PARENT_OBJ_ID = @PARENT_OBJ_ID
|
||||
PRINT 'FOLDER-PART ' + @FOLD_PART + ' EXISTIERT BEREITS'
|
||||
END
|
||||
SET @PARENT_OBJ_ID = @FOLD_PART_IDB_OBJ_ID
|
||||
|
||||
SET @FOLDER_DEPTH += 1
|
||||
FETCH NEXT FROM cursSplitFolder INTO @FOLD_PART
|
||||
END
|
||||
CLOSE cursSplitFolder
|
||||
DEALLOCATE cursSplitFolder
|
||||
|
||||
IF NOT EXISTS(SELECT GUID FROM TBIDB_OBJECT_DYNAMIC_FOLDER WHERE IDB_OBJ_ID = @pIDB_OBJ_ID AND DYN_FOLD_ID = @FOLD_PART_IDB_OBJ_ID)
|
||||
INSERT INTO TBIDB_OBJECT_DYNAMIC_FOLDER (IDB_OBJ_ID,DYN_FOLD_ID,ADDED_WHO) VALUES (@pIDB_OBJ_ID,@FOLD_PART_IDB_OBJ_ID,@pWHO);
|
||||
END
|
||||
GO
|
||||
DROP TABLE TBIDB_SN_IDB_OBJ
|
||||
DROP TABLE TBIDB_STRUCTURE_NODES
|
||||
CREATE TABLE TBIDB_STRUCTURE_NODES
|
||||
(
|
||||
GUID BIGINT NOT NULL IDENTITY (1, 1),
|
||||
PARENT_ID BIGINT NOT NULL DEFAULT 0,
|
||||
TERM_LANG_ID BIGINT NOT NULL,
|
||||
ADDED_WHO VARCHAR(100),
|
||||
ADDED_WHEN DATETIME DEFAULT GETDATE(),
|
||||
CHANGED_WHO VARCHAR(100),
|
||||
CHANGED_WHEN DATETIME,
|
||||
CONSTRAINT PK_TBIDB_STRUCTURE_NODES PRIMARY KEY (GUID),
|
||||
CONSTRAINT FK_TBIDB_STRUCTURE_NODES_TLANGID FOREIGN KEY (TERM_LANG_ID) REFERENCES TBIDB_LANGUAGE_TERM (GUID),
|
||||
CONSTRAINT UQ_TBIDB_STRUCTURE_NODES UNIQUE(PARENT_ID,TERM_LANG_ID)
|
||||
)
|
||||
GO
|
||||
CREATE TRIGGER TBIDB_STRUCTURE_NODES_AFT_UPD ON TBIDB_STRUCTURE_NODES
|
||||
FOR UPDATE
|
||||
AS
|
||||
UPDATE TBIDB_STRUCTURE_NODES SET CHANGED_WHEN = GETDATE()
|
||||
FROM INSERTED
|
||||
WHERE TBIDB_STRUCTURE_NODES .GUID = INSERTED.GUID
|
||||
GO
|
||||
CREATE OR ALTER PROCEDURE [dbo].[PRIDB_NEW_STRUCTURE_NODE] @pPARENT_ID BIGINT, @pTERM_LANG_ID BIGINT,@pWHO VARCHAR(100), @OUT_SN_GUID BIGINT OUTPUT
|
||||
AS
|
||||
BEGIN
|
||||
IF NOT EXISTS(SELECT GUID FROM TBIDB_STRUCTURE_NODES WHERE PARENT_ID = @pPARENT_ID AND TERM_LANG_ID = @pTERM_LANG_ID)
|
||||
INSERT INTO TBIDB_STRUCTURE_NODES (PARENT_ID,TERM_LANG_ID,ADDED_WHO) VALUES (@pPARENT_ID,@pTERM_LANG_ID,@pWHO)
|
||||
BEGIN
|
||||
SELECT @OUT_SN_GUID = GUID FROM TBIDB_STRUCTURE_NODES WHERE PARENT_ID = @pPARENT_ID AND TERM_LANG_ID = @pTERM_LANG_ID
|
||||
END
|
||||
END
|
||||
GO
|
||||
|
||||
CREATE TABLE TBIDB_STRUCTURE_NODES_IDB_OBJ
|
||||
(
|
||||
GUID BIGINT NOT NULL IDENTITY (1, 1),
|
||||
SN_ID BIGINT NOT NULL,
|
||||
IDB_OBJ_ID BIGINT NOT NULL,
|
||||
ADDED_WHO VARCHAR(100),
|
||||
ADDED_WHEN DATETIME DEFAULT GETDATE(),
|
||||
CONSTRAINT PK_TBIDB_SN_IDB_OBJ PRIMARY KEY (GUID),
|
||||
CONSTRAINT FK_TBIDB_SN_IDB_OBJ_SN_ID FOREIGN KEY (SN_ID) REFERENCES TBIDB_STRUCTURE_NODES (GUID),
|
||||
CONSTRAINT FK_TBIDB_SN_IDB_OBJ_ID FOREIGN KEY (IDB_OBJ_ID) REFERENCES TBIDB_OBJECT (IDB_OBJ_ID),
|
||||
CONSTRAINT UQ_TBIDB_SN_IDB_OBJ UNIQUE(SN_ID,IDB_OBJ_ID)
|
||||
)
|
||||
GO
|
||||
CREATE VIEW VWIDB_LANGAGE_TERM_KIND_NODE
|
||||
AS
|
||||
SELECT
|
||||
LTERM.GUID
|
||||
,LTERM.TERM_ID
|
||||
,TERM.TERM_VALUE
|
||||
,LTERM.LANG_ID
|
||||
,LANG.LANG_CODE
|
||||
FROM
|
||||
TBIDB_LANGUAGE_TERM LTERM
|
||||
INNER JOIN TBIDB_LANGUAGE LANG ON LTERM.LANG_ID = LANG.GUID
|
||||
INNER JOIN TBIDB_TERM_VALUE_VARCHAR TERM ON LTERM.TERM_ID = TERM.GUID
|
||||
WHERE
|
||||
LTERM.KIND_TYPE = 4
|
||||
|
||||
GO
|
||||
CREATE OR ALTER PROCEDURE [dbo].[PRIDB_NEW_LANGUAGE_TERM] @pOBJ_ID BIGINT, @pTERM_ID BIGINT,@pWHO_TERM_ID BIGINT,@pKIND_TYPE INT,@pLANG_ID TINYINT, @OUT_LANG_TERM_GUID BIGINT OUTPUT
|
||||
AS
|
||||
BEGIN
|
||||
IF NOT EXISTS(SELECT GUID FROM TBIDB_LANGUAGE_TERM WHERE OBJECT_ID = @pOBJ_ID AND LANG_ID = @pLANG_ID AND TERM_ID = @pTERM_ID AND KIND_TYPE = @pKIND_TYPE )
|
||||
INSERT INTO TBIDB_LANGUAGE_TERM (OBJECT_ID,TERM_ID,LANG_ID,ADDED_WHO,KIND_TYPE) VALUES (@pOBJ_ID,@pTERM_ID,@pLANG_ID,@pWHO_TERM_ID,@pKIND_TYPE)
|
||||
ELSE
|
||||
BEGIN
|
||||
UPDATE TBIDB_LANGUAGE_TERM SET TERM_ID = @pTERM_ID,CHANGED_WHO = @pWHO_TERM_ID WHERE OBJECT_ID = @pOBJ_ID AND LANG_ID = @pLANG_ID AND KIND_TYPE = @pKIND_TYPE
|
||||
AND TERM_ID <> @pTERM_ID
|
||||
PRINT 'NEW LANG TERM ALREADY EXISTING'
|
||||
END
|
||||
SELECT @OUT_LANG_TERM_GUID = GUID FROM TBIDB_LANGUAGE_TERM WHERE OBJECT_ID = @pOBJ_ID AND LANG_ID = @pLANG_ID AND TERM_ID = @pTERM_ID AND KIND_TYPE = @pKIND_TYPE
|
||||
PRINT 'NEW LANGTERMID: ' + CONVERT(VARCHAR(10),@OUT_LANG_TERM_GUID)
|
||||
END
|
||||
GO
|
||||
-- =============================================
|
||||
-- Author: DD MS
|
||||
-- Changed:
|
||||
-- =============================================
|
||||
--CREATE PROCEDURE PRIDB_NEW_DYNAMIC_FOLDER_FOR_OBJECT
|
||||
|
||||
DECLARE @pIDB_OBJ_ID BIGINT, @pDYNAMIC_FOLDER VARCHAR(900),@pWHO VARCHAR(100),@pLANG_ID TINYINT
|
||||
--AS
|
||||
SET @pIDB_OBJ_ID = 10026
|
||||
SET @pDYNAMIC_FOLDER = 'DIGITAL DATA\Geschäftsprozess\Projekte\Zooflow\Entwicklung\Dynamischer Ordner'
|
||||
SET @pLANG_ID = 1
|
||||
SET @pWHO = 'SchreiberM'
|
||||
DECLARE
|
||||
@FOLD_PART VARCHAR(250),
|
||||
@WHO_TERM_ID BIGINT
|
||||
EXEC PRIDB_NEW_TERM 'VARCHAR',@pWHO,@pWHO,@TERM_ID = @WHO_TERM_ID OUTPUT;
|
||||
BEGIN
|
||||
|
||||
DECLARE @FOLDER_DEPTH TINYINT,@FOLDER_PART VARCHAR(900)
|
||||
SET @FOLDER_DEPTH = 0
|
||||
DECLARE @PARENT_NODE_GUID BIGINT
|
||||
--SPLIT FOR FOLDER PARTS
|
||||
DECLARE cursSplitFolder CURSOR FOR
|
||||
SELECT Item FROM [dbo].[FN_SPLIT_STRING] (@pDYNAMIC_FOLDER,'\')
|
||||
OPEN cursSplitFolder
|
||||
FETCH NEXT FROM cursSplitFolder INTO @FOLD_PART
|
||||
WHILE @@FETCH_STATUS = 0
|
||||
BEGIN
|
||||
--EACH FOLDER PART WORKED SEPERATELY
|
||||
IF @FOLDER_DEPTH = 0
|
||||
BEGIN
|
||||
SET @PARENT_NODE_GUID = 0
|
||||
SET @FOLDER_PART = @FOLD_PART
|
||||
END
|
||||
ELSE
|
||||
BEGIN
|
||||
SET @FOLDER_PART += '\' + @FOLD_PART
|
||||
END
|
||||
PRINT '##############################'
|
||||
PRINT '@FOLDER_PART: ' + @FOLDER_PART
|
||||
DECLARE @PATH_PART_ID BIGINT,@FOLDER_PART_ID BIGINT
|
||||
EXEC PRIDB_NEW_TERM 'VARCHAR',@FOLD_PART,@pWHO,@TERM_ID = @PATH_PART_ID OUTPUT;
|
||||
--EXEC PRIDB_NEW_TERM 'VARCHAR',@FOLDER_PART,'DD MS',@TERM_ID = @FOLDER_PART_ID OUTPUT;
|
||||
DECLARE @OUT_LANG_TERM_GUID BIGINT
|
||||
|
||||
--PRÜFEN OB DER NODE_TERM ANGELEGT IST
|
||||
EXEC [PRIDB_NEW_LANGUAGE_TERM] @PARENT_NODE_GUID, @PATH_PART_ID,@WHO_TERM_ID,4,@pLANG_ID,@OUT_LANG_TERM_GUID = @OUT_LANG_TERM_GUID
|
||||
SELECT @OUT_LANG_TERM_GUID = GUID FROM TBIDB_LANGUAGE_TERM WHERE OBJECT_ID = @PARENT_NODE_GUID AND LANG_ID = @pLANG_ID AND TERM_ID = @PATH_PART_ID AND KIND_TYPE = 4
|
||||
DECLARE @OUT_SN_GUID BIGINT
|
||||
EXEC PRIDB_NEW_STRUCTURE_NODE @PARENT_NODE_GUID, @OUT_LANG_TERM_GUID,@pWHO,@OUT_SN_GUID = @OUT_SN_GUID OUTPUT
|
||||
|
||||
SET @PARENT_NODE_GUID = @OUT_SN_GUID
|
||||
|
||||
SET @FOLDER_DEPTH += 1
|
||||
FETCH NEXT FROM cursSplitFolder INTO @FOLD_PART
|
||||
END
|
||||
CLOSE cursSplitFolder
|
||||
DEALLOCATE cursSplitFolder
|
||||
|
||||
--IF NOT EXISTS(SELECT GUID FROM TBIDB_OBJECT_DYNAMIC_FOLDER WHERE IDB_OBJ_ID = @pIDB_OBJ_ID AND DYN_FOLD_ID = @FOLD_PART_IDB_OBJ_ID)
|
||||
-- INSERT INTO TBIDB_OBJECT_DYNAMIC_FOLDER (IDB_OBJ_ID,DYN_FOLD_ID,ADDED_WHO) VALUES (@pIDB_OBJ_ID,@FOLD_PART_IDB_OBJ_ID,@pWHO);
|
||||
END
|
||||
|
||||
GO
|
||||
CREATE VIEW VWIDB_LANGAGE_TERM_KIND_NODE
|
||||
AS
|
||||
SELECT
|
||||
SN.GUID NODE_ID
|
||||
,SN.PARENT_ID NODE_PARENT_ID
|
||||
,LTERM.TERM_ID
|
||||
,LTERM.OBJECT_ID OBJ_ID
|
||||
,TERM.TERM_VALUE AS NODE_CAPTION
|
||||
,LTERM.LANG_ID
|
||||
,LANG.LANG_CODE
|
||||
FROM
|
||||
TBIDB_STRUCTURE_NODES SN INNER JOIN
|
||||
TBIDB_LANGUAGE_TERM LTERM ON SN.TERM_LANG_ID = LTERM.GUID
|
||||
INNER JOIN TBIDB_LANGUAGE LANG ON LTERM.LANG_ID = LANG.GUID
|
||||
INNER JOIN TBIDB_TERM_VALUE_VARCHAR TERM ON LTERM.TERM_ID = TERM.GUID
|
||||
WHERE
|
||||
LTERM.KIND_TYPE = 4
|
||||
|
||||
GO
|
||||
select * from TBIDB_STRUCTURE_NODES
|
||||
Reference in New Issue
Block a user