82 lines
7.9 KiB
Transact-SQL
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

USE [DD_ECM]
GO
/****** Object: StoredProcedure [dbo].[PRPMO_CREATE_SQL] Script Date: 26.05.2015 14:34:17 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[PRPMO_CREATE_SQL](@pFORM_ID INT)
AS
DECLARE @COL_NAME VARCHAR(50),
@SQL_BEGIN VARCHAR(1000),
@SQL_END VARCHAR(2000),
@SQL VARCHAR(5000),
@CONTROL_ID INT,
@RESULT VARCHAR(8000),
@TYPEID INT,
@TABINDEX INT,
@SQL_LBL VARCHAR(2000)
DECLARE c_SPALTENNAMEN CURSOR FOR SELECT T.GUID,'['+T.COL_NAME+']' AS 'COL_NAME', T2.GUID,T1.TAB_INDEX FROM TBPMO_CONTROL T, TBPMO_CONTROL_SCREEN T1, TBPMO_CONTROL_TYPE T2 WHERE
T.SHOW_COLUMN = 1 AND T.[COL_NAME] <> '' AND T.GUID = T1.CONTROL_ID AND T.CONTROL_TYPE_ID = T2.GUID AND T.FORM_ID = @pFORM_ID AND LEN(ISNULL(T.COL_NAME,'')) > 0 and t.CONTROL_TYPE_ID not in (1,5,12) UNION
SELECT T.GUID,'['+T.NAME+']' AS 'COL_NAME', T2.GUID,T1.TAB_INDEX FROM TBPMO_CONTROL T, TBPMO_CONTROL_SCREEN T1, TBPMO_CONTROL_TYPE T2 WHERE
T.GUID = T1.CONTROL_ID AND T.CONTROL_TYPE_ID = T2.GUID AND T.FORM_ID = @pFORM_ID and t.CONTROL_TYPE_ID = 1 AND LEN(ISNULL(t.SQL_COMMAND_1,'')) > 0 ORDER BY TAB_INDEX
BEGIN
SELECT @SQL_BEGIN = SQL_RECORD_SQL1, @SQL_END = SQL_RECORD_SQL2 FROM TBPMO_KONFIGURATION WHERE GUID = 1 --T2.ADDED_WHO,T2.ADDED_WHEN, T2.CHANGED_WHO, T2.CHANGED_WHEN
SET @SQL_END = REPLACE(@SQL_END,'@FORM_ID',@pFORM_ID)
OPEN c_SPALTENNAMEN
FETCH NEXT FROM c_SPALTENNAMEN INTO @CONTROL_ID,@COL_NAME,@TYPEID,@TABINDEX
WHILE @@FETCH_STATUS = 0
BEGIN
SET @COL_NAME = REPLACE(@COL_NAME,'lbl','')
IF LEN(ISNULL(@SQL,'')) = 0
BEGIN
IF @TYPEID = 10 OR @TYPEID = 11
SET @SQL = 'ISNULL((SELECT CASE WHEN UPPER(RTRIM(LTRIM(T5.VALUE))) = ''TRUE'' THEN 1 ELSE 0 END FROM TBPMO_CONTROL_VALUE T5 WHERE T5.RECORD_ID = T2.GUID AND T5.CONTROL_ID = ' + CONVERT(VARCHAR(20),@CONTROL_ID) + '),0) AS ' + @COL_NAME
ELSE IF @TYPEID = 6
SET @SQL = '(SELECT T6.IMG FROM TBPMO_CONTROL_IMAGE T6 WHERE T6.RECORD_ID = T2.GUID AND T6.CONTROL_ID = ' + CONVERT(VARCHAR(20),@CONTROL_ID) + ') AS ' + @COL_NAME
ELSE IF @TYPEID = 1
BEGIN
SELECT @SQL_LBL = SQL_COMMAND_1 FROM TBPMO_CONTROL WHERE GUID = @CONTROL_ID
SET @SQL_LBL = REPLACE(UPPER(@SQL_LBL),'@RECORD_ID','T2.GUID')
SET @SQL = '(' + @SQL_LBL + ') AS ' + @COL_NAME
END
ELSE
SET @SQL = '(SELECT T5.VALUE FROM TBPMO_CONTROL_VALUE T5 WHERE T5.RECORD_ID = T2.GUID AND T5.CONTROL_ID = ' + CONVERT(VARCHAR(20),@CONTROL_ID) + ') AS ' + @COL_NAME
END
ELSE
BEGIN
IF (@TYPEID = 10) OR (@TYPEID = 11)
SET @SQL = @SQL + ',ISNULL((SELECT CASE WHEN UPPER(RTRIM(LTRIM(T5.VALUE))) = ''TRUE'' THEN 1 ELSE 0 END FROM TBPMO_CONTROL_VALUE T5 WHERE T5.RECORD_ID = T2.GUID AND T5.CONTROL_ID = ' + CONVERT(VARCHAR(20),@CONTROL_ID) + '),0) AS ' + @COL_NAME
ELSE IF @TYPEID = 6
SET @SQL = @SQL + ',(SELECT T6.IMG FROM TBPMO_CONTROL_IMAGE T6 WHERE T6.RECORD_ID = T2.GUID AND T5.CONTROL_ID = ' + CONVERT(VARCHAR(20),@CONTROL_ID) + ') AS ' + @COL_NAME
ELSE IF @TYPEID = 1
BEGIN
SELECT @SQL_LBL = SQL_COMMAND_1 FROM TBPMO_CONTROL WHERE GUID = @CONTROL_ID
SET @SQL_LBL = REPLACE(UPPER(@SQL_LBL),'@RECORD_ID','T2.GUID')
SET @SQL = @SQL + ',(' + @SQL_LBL + ') AS ' + @COL_NAME
END
ELSE
SET @SQL = @SQL + ',(SELECT T5.VALUE FROM TBPMO_CONTROL_VALUE T5 WHERE T5.RECORD_ID = T2.GUID AND T5.CONTROL_ID = ' + CONVERT(VARCHAR(20),@CONTROL_ID) + ') AS ' + @COL_NAME
END
FETCH NEXT FROM c_SPALTENNAMEN INTO @CONTROL_ID,@COL_NAME,@TYPEID,@TABINDEX
END
CLOSE c_SPALTENNAMEN
DEALLOCATE c_SPALTENNAMEN
SET @RESULT = @SQL_BEGIN + @SQL + @SQL_END
IF EXISTS (SELECT FORM_ID FROM TBPMO_FORM_SQL WHERE FORM_ID = @pFORM_ID)
UPDATE TBPMO_FORM_SQL SET SQL_COMMAND = @RESULT WHERE FORM_ID = @pFORM_ID
ELSE
INSERT INTO TBPMO_FORM_SQL(FORM_ID,SQL_COMMAND) VALUES(@pFORM_ID,@RESULT)
END