USE [DD_ECM] GO /****** Object: StoredProcedure [dbo].[PRPMO_CREATE_SQL] Script Date: 09.04.2015 09:53:38 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE 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 DECLARE c_SPALTENNAMEN CURSOR FOR SELECT T.GUID,'['+T.COL_NAME+']' AS 'COL_NAME', T2.GUID 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) ORDER BY T1.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 WHILE @@FETCH_STATUS = 0 BEGIN 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 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 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 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