kiranmurali
Yak Posting Veteran
55 Posts |
Posted - 2012-05-18 : 02:00:22
|
Hi All,i have writen a sp for inserting the records for all master tables using one SP.now same table has been changed in my AUDIT.the normal table example is as below:CREATE TABLE [dbo].[PNET_EMP_MASTER_STATUS]( [STATUSID] [int] IDENTITY(1,1) NOT NULL, [STATUS] [varchar](50) NOT NULL, [SHORT_NAME] [varchar](5) NOT NULL, PRIMARY KEY CLUSTERED ( [STATUSID] ASC)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY],UNIQUE NONCLUSTERED ( [STATUS] ASC)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY],UNIQUE NONCLUSTERED ( [SHORT_NAME] ASC)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]) ON [PRIMARY]GOThe changed master table in audit is as below:CREATE TABLE [dbo].[PNET_EMP_MASTER_STATUS]( [STATUSID] [int] IDENTITY(1,1) NOT NULL, [STATUS] [varchar](50) NOT NULL, [SHORT_NAME] [varchar](5) NOT NULL, [DataVersion] [int] NOT NULL, [CreatedDate] [datetime] NOT NULL, [CreatedBy] [nvarchar](200) NOT NULL, [ModifiedDate] [datetime] NOT NULL, [ModifiedBy] [nvarchar](200) NOT NULL, [MODIFIED_USERID] [varchar](256) NULL, [IPADDRESS] [varchar](20) NULL,PRIMARY KEY CLUSTERED ( [STATUSID] ASC)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY],UNIQUE NONCLUSTERED ( [STATUS] ASC)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY],UNIQUE NONCLUSTERED ( [SHORT_NAME] ASC)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]) ON [PRIMARY]GOTHE SP is as below:CREATE PROCEDURE [dbo].[SP_MASTERTABLE_ADD]-- The below are the input arguments for calling the procedure@MASTER_TABLE_NAME VARCHAR(150),@MASTER_NAME VARCHAR(100),@MASTER_SHORTNAME VARCHAR (20),@MASTER_APPRAISER BIT=NULL,@MASTER_PARENT_NAME VARCHAR(150)=NULL,@USERID VARCHAR(256),@IPADDRESS VARCHAR(20)ASDECLARE @MASTER_FIELDNAME VARCHAR(150)DECLARE @SQL VARCHAR(2000)DECLARE @MASTER_PARENT_ID INT = NULLSET @MASTER_TABLE_NAME = UPPER(@MASTER_TABLE_NAME)IF (@MASTER_PARENT_NAME IS NOT NULL)BEGIN SELECT @MASTER_PARENT_ID = FUNCTION_DEPARTMENTID FROM PNET_MASTER_FUNCTION_DEPARTMENT WHERE UPPER(FUNCTION_DEPARTMENT) = UPPER(@MASTER_PARENT_NAME)ENDSELECT @MASTER_FIELDNAME = COALESCE(@MASTER_FIELDNAME + ', ','') + NAME FROM SYS.COLUMNS WHERE NAME NOT LIKE '%ID%' AND OBJECT_ID = (SELECT OBJECT_ID FROM SYS.TABLES WHERE NAME = @MASTER_TABLE_NAME)SELECT @SQL = 'INSERT INTO ' + @MASTER_TABLE_NAME + '( ' + @MASTER_FIELDNAME + ' ) VALUES (''' + UPPER(@MASTER_NAME) + ''',''' + UPPER(@MASTER_SHORTNAME) + ''''IF (@MASTER_TABLE_NAME LIKE '%POSITION%') BEGIN SELECT @SQL = @SQL + ' , ' + CAST(@MASTER_APPRAISER AS VARCHAR(3)) ENDIF(@MASTER_TABLE_NAME LIKE 'CHECKLIST%') BEGIN SELECT @SQL = @SQL + ' , ' + CAST(@MASTER_APPRAISER AS VARCHAR(3)) ENDIF (@MASTER_TABLE_NAME LIKE '%FUNCTION%' AND @MASTER_PARENT_ID IS NOT NULL) BEGIN SELECT @SQL = @SQL + ' , ' + CAST(@MASTER_PARENT_ID AS VARCHAR(3)) ENDIF (@MASTER_TABLE_NAME LIKE '%FUNCTION%' AND @MASTER_PARENT_ID IS NULL) BEGIN SELECT @SQL = @SQL + ' , NULL ' ENDSELECT @SQL = @SQL + ')'EXEC (@SQL)-- SP Ends hereif i use same sp for inserting the records it is throwing error saying there are fewer columns in the insert statement when compare to the values clause.the modified insert statement is as below:SELECT @SQL = 'INSERT INTO ' + @MASTER_TABLE_NAME + '( ' + @MASTER_FIELDNAME + ' ) VALUES (''' + UPPER(@MASTER_NAME) + ''',''' + UPPER(@MASTER_SHORTNAME) + ''',''' + UPPER(1) + ''',''' + CONVERT(VARCHAR(20),GETDATE()) +''',''' + UPPER(@USERID) + ''',''' + CONVERT(VARCHAR(20),GETDATE()) +''',''' + UPPER(@USERID)+''','''+ UPPER(@USERID)+''',''' + UPPER(@IPADDRESS) +''''Thanks in AdvanceKiran Murali |
|