ALTER PROCEDURE [dbo].[PRPMO_COPY_ENTITY](@pFORM_ID INT) AS DECLARE @NEW_FORM_ID INT, @PARENT_ID INT, @NAME VARCHAR(100), @LEVEL VARCHAR(10), @SHOW_FORM_CONSTR BIT, @FORM_TYPE_ID INT, @CONTROL_GUID INTEGER, @CONTROL_TYPE_ID INT, @CONTROL_NAME VARCHAR(100) ,@COL_NAME VARCHAR(100) ,@REQUIRED BIT ,@DEFAULT_VALUE VARCHAR(100) ,@SQL_COMMAND_1 VARCHAR(2000) ,@SQL_COMMAND_2 VARCHAR(2000) ,@CONNECTION_ID_1 SMALLINT ,@CONNECTION_ID_2 SMALLINT ,@READ_ONLY BIT ,@VALIDATION BIT ,@MULTILINE BIT ,@PARENT_CONTROL_ID INT ,@MASTER_DATA_ID INT ,@FORMAT_TYPE VARCHAR(50) ,@SHOW_COLUMN BIT ,@STATIC_LIST VARCHAR(2000) SELECT @PARENT_ID = PARENT_ID, @NAME = 'COPY_' + NAME,@LEVEL = [LEVEL],@SHOW_FORM_CONSTR = SHOW_FORM_CONSTRUCT, @FORM_TYPE_ID = FORM_TYPE_ID FROM TBPMO_FORM WHERE GUID = @pFORM_ID INSERT INTO TBPMO_FORM ( PARENT_ID,NAME,LEVEL,ADDED_WHO,SHOW_FORM_CONSTRUCT,FORM_TYPE_ID) VALUES ( @PARENT_ID,@NAME,@LEVEL,'PRPMO_COPY_ENTITY',@SHOW_FORM_CONSTR,@FORM_TYPE_ID) SELECT @NEW_FORM_ID = MAX(GUID) FROM TBPMO_FORM INSERT INTO TBPMO_FORM_VIEW (FORM_ID, SCREEN_ID, FORM_TITLE, DESCRIPTION, ADDED_WHO) VALUES (@NEW_FORM_ID, 1, 'UNDEFINED_FORMTITLE', '', 'PRPMO_COPY_ENTITY') DECLARE c_CONTROL CURSOR FOR SELECT GUID,[CONTROL_TYPE_ID] ,'COPY_' + [NAME] ,[COL_NAME] ,[REQUIRED] ,[DEFAULT_VALUE] ,[SQL_COMMAND_1] ,[SQL_COMMAND_2] ,[CONNECTION_ID_1] ,[CONNECTION_ID_2] ,[READ_ONLY] ,[VALIDATION] ,[MULTILINE] ,[PARENT_CONTROL_ID] ,[MASTER_DATA_ID] ,[FORMAT_TYPE] ,[SHOW_COLUMN],STATIC_LIST FROM TBPMO_CONTROL WHERE FORM_ID = @pFORM_ID ORDER BY PARENT_CONTROL_ID BEGIN OPEN c_CONTROL FETCH NEXT FROM c_CONTROL INTO @CONTROL_GUID,@CONTROL_TYPE_ID, @CONTROL_NAME ,@COL_NAME ,@REQUIRED ,@DEFAULT_VALUE ,@SQL_COMMAND_1 ,@SQL_COMMAND_2 ,@CONNECTION_ID_1 ,@CONNECTION_ID_2 ,@READ_ONLY ,@VALIDATION ,@MULTILINE ,@PARENT_CONTROL_ID ,@MASTER_DATA_ID ,@FORMAT_TYPE ,@SHOW_COLUMN ,@STATIC_LIST WHILE @@FETCH_STATUS = 0 BEGIN IF @PARENT_CONTROL_ID > 0 BEGIN DECLARE @CTRLNAME VARCHAR(100) SELECT @CTRLNAME = 'COPY_' + [NAME] FROM TBPMO_CONTROL WHERE GUID = @PARENT_CONTROL_ID PRINT 'PCTRID = ' + CONVERT(VARCHAR(10),@PARENT_CONTROL_ID) PRINT '@CTRLNAME = ' + @CTRLNAME SELECT @PARENT_CONTROL_ID = GUID FROM TBPMO_CONTROL WHERE NAME = @CTRLNAME AND FORM_ID = @NEW_FORM_ID PRINT 'NEW PCTRID = ' + CONVERT(VARCHAR(10),@PARENT_CONTROL_ID) END INSERT INTO TBPMO_CONTROL ( FORM_ID ,[CONTROL_TYPE_ID] ,[NAME] ,[COL_NAME] ,[REQUIRED] ,[DEFAULT_VALUE] ,[SQL_COMMAND_1] ,[SQL_COMMAND_2] ,[CONNECTION_ID_1] ,[CONNECTION_ID_2] ,[READ_ONLY] ,[VALIDATION] ,[MULTILINE] ,[PARENT_CONTROL_ID] ,[MASTER_DATA_ID] ,[FORMAT_TYPE] ,[SHOW_COLUMN] ,[STATIC_LIST] ) VALUES ( @NEW_FORM_ID ,@CONTROL_TYPE_ID ,@CONTROL_NAME ,@COL_NAME ,@REQUIRED ,@DEFAULT_VALUE ,@SQL_COMMAND_1 ,@SQL_COMMAND_2 ,@CONNECTION_ID_1 ,@CONNECTION_ID_2 ,@READ_ONLY ,@VALIDATION ,@MULTILINE ,@PARENT_CONTROL_ID ,@MASTER_DATA_ID ,@FORMAT_TYPE ,@SHOW_COLUMN ,@STATIC_LIST ) DECLARE @NEW_CONTROLID INTEGER SELECT @NEW_CONTROLID = MAX(GUID) FROM TBPMO_CONTROL DECLARE @SCREEN_ID INTEGER ,@CONTROL_TEXT VARCHAR(100) ,@X_LOC FLOAT ,@Y_LOC FLOAT ,@HEIGHT INTEGER ,@WIDTH INTEGER ,@FONT_FAMILY VARCHAR(50) ,@FONT_COLOR INTEGER ,@FONT_SIZE INTEGER ,@FONT_STYLE INTEGER ,@TAB_INDEX INTEGER ,@TAB_STOP BIT ,@BACK_COLOR INTEGER SELECT @SCREEN_ID = [SCREEN_ID], @CONTROL_TEXT = [CONTROL_TEXT],@X_LOC = [X_LOC], @Y_LOC = [Y_LOC],@HEIGHT = [HEIGHT], @WIDTH = [WIDTH],@FONT_FAMILY = [FONT_FAMILY], @FONT_COLOR = [FONT_COLOR], @FONT_SIZE = [FONT_SIZE],@FONT_STYLE = [FONT_STYLE], @TAB_INDEX = [TAB_INDEX], @TAB_STOP = [TAB_STOP], @BACK_COLOR = [BACK_COLOR] FROM TBPMO_CONTROL_SCREEN WHERE CONTROL_ID = @CONTROL_GUID INSERT INTO TBPMO_CONTROL_SCREEN ( CONTROL_ID, SCREEN_ID ,CONTROL_TEXT ,X_LOC ,Y_LOC ,HEIGHT ,WIDTH ,FONT_FAMILY ,FONT_COLOR ,FONT_SIZE ,FONT_STYLE ,TAB_INDEX ,TAB_STOP ,BACK_COLOR) VALUES( @NEW_CONTROLID ,@SCREEN_ID ,@CONTROL_TEXT ,@X_LOC ,@Y_LOC ,@HEIGHT ,@WIDTH ,@FONT_FAMILY ,@FONT_COLOR ,@FONT_SIZE ,@FONT_STYLE ,@TAB_INDEX ,@TAB_STOP ,@BACK_COLOR ) FETCH NEXT FROM c_CONTROL INTO @CONTROL_GUID,@CONTROL_TYPE_ID, @CONTROL_NAME ,@COL_NAME ,@REQUIRED ,@DEFAULT_VALUE ,@SQL_COMMAND_1 ,@SQL_COMMAND_2 ,@CONNECTION_ID_1 ,@CONNECTION_ID_2 ,@READ_ONLY ,@VALIDATION ,@MULTILINE ,@PARENT_CONTROL_ID ,@MASTER_DATA_ID ,@FORMAT_TYPE ,@SHOW_COLUMN ,@STATIC_LIST END CLOSE c_CONTROL DEALLOCATE c_CONTROL END