Thursday, March 19, 2009

Generation of Insertion and updation of a table's script in SQL Server 2005

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:
-- Create date: <13/10/2008,>
-- Description:
-- =============================================
ALTER PROCEDURE [dbo].[INSERT_UPDATE_SCRIPT]
@lastreleasedate DATETIME

AS
BEGIN
SET NOCOUNT ON;
Declare @EventId int
Declare @EventDesc int
Declare @UseExtParmInd varchar(1)
Declare @DisplayInd varchar(1)
Declare @EnglishString nvarchar(200)
Declare @FrenchString varchar(200)
Declare @SpanishString varchar(200)
Declare @GermanString varchar(200)
Declare @Device varchar(50)
Declare @StepState int
Declare @Tag nvarchar(5)
declare @insertstat nvarchar(2000)
declare @updatestat nvarchar(2000)
DECLARE Insert_Cursor CURSOR FOR
select EventId,EventDesc,
UseExtParmInd,
DisplayInd,
EnglishString,
FrenchString,
SpanishString,
GermanString,
Device,
StepState, Tag from events
where insertdate is not null and insertdate>@lastreleasedate and eventid between 7000 and 10000
-- Variable value from the outer cursor
SET NOCOUNT ON
OPEN Insert_Cursor
FETCH NEXT FROM Insert_Cursor INTO @EventId, @EventDesc,@UseExtParmInd,
@DisplayInd,@EnglishString,@FrenchString,@SpanishString,@GermanString,@Device,@StepState,@Tag
--Looping through each record and splitting griev... count and inserting to temporary table
WHILE @@FETCH_STATUS = 0
BEGIN
set @insertstat = 'insert into events(EventId,EventDesc,UseExtParmInd,
DisplayInd,EnglishString,FrenchString,SpanishString,GermanString,Device,StepState,Tag)values('
set @insertstat = @insertstat + CONVERT( VARCHAR ,@EventId) + ','+
CONVERT (VARCHAR,@EventDesc)
set @insertstat = @insertstat + ','''+@UseExtParmInd + ''''
+'' +',''' +@DisplayInd +''''+'' +','''+@EnglishString+''''+ ','
IF (@FrenchString IS NULL)
BEGIN
set @insertstat = @insertstat + 'null,'
END
else
begin
set @insertstat = @insertstat + '''' +@FrenchString+''','
end
--print @insertstat
IF (@SpanishString IS null)
BEGIN
set @insertstat = @insertstat + 'null,'
END
else
begin
set @insertstat = @insertstat + '''' +@SpanishString+''','
end
IF (@GermanString IS null)
BEGIN
set @insertstat = @insertstat + 'null,'
END
else
begin
set @insertstat = @insertstat + '''' +@GermanString+''','
end

IF(@Device IS null)
BEGIN
set @insertstat = @insertstat + 'null,'
END
else
begin
set @insertstat = @insertstat + '''' +@Device+''','
end
IF (@StepState IS null)
BEGIN
set @insertstat = @insertstat + 'null,'
END
else
begin
set @insertstat = @insertstat + convert(varchar(8),@StepState) +','
end

IF(@Tag IS NULL )
BEGIN
set @insertstat = @insertstat + 'null)'
END
else
begin
set @insertstat = @insertstat + '''' +@Tag+''')'
end

print @insertstat

---+'' +','''+@SpanishString +''''+'' +','''+@GermanString+''''+'' +','''+@Device+''''+','+CONVERT(VARCHAR, @StepState)+','''+ @Tag + '''' + ')'
FETCH NEXT FROM Insert_Cursor INTO @EventId, @EventDesc,@UseExtParmInd,
@DisplayInd,@EnglishString,@FrenchString,@SpanishString,@GermanString,@Device,@StepState,@Tag
END
CLOSE Insert_Cursor
DEALLOCATE Insert_Cursor




DECLARE Update_cursor CURSOR FOR
select EventId,EventDesc,
UseExtParmInd,
DisplayInd,
EnglishString,
FrenchString,
SpanishString,
GermanString,
Device,
StepState, Tag from events
where UPDATEDATE is not null and UPDATEDATE>@lastreleasedate and eventid between 7000 and 10000
-- Variable value from the outer cursor
SET NOCOUNT ON
OPEN Update_cursor
FETCH NEXT FROM Update_cursor INTO @EventId, @EventDesc,@UseExtParmInd,@DisplayInd,
@EnglishString,@FrenchString,@SpanishString,@GermanString,@Device,@StepState,@Tag
--Looping through each record and splitting griev... count and inserting to temporary table
WHILE @@FETCH_STATUS = 0
BEGIN

set @updatestat='UPDATE EVENTS SET EventDesc ='


IF (@EventDesc IS NULL)
BEGIN
set @updatestat = @updatestat+ 'null,'
set @updatestat =@updatestat+' UseExtParmInd='
END
else
begin
set @updatestat =@updatestat+ '' +convert(varchar(8),@EventDesc)+','
set @updatestat =@updatestat+' UseExtParmInd='
end

IF (@UseExtParmInd IS NULL)
BEGIN
set @updatestat = @updatestat+ 'null,'
set @updatestat =@updatestat+' DisplayInd='
END
else
begin
set @updatestat =@updatestat+ '''' +@UseExtParmInd+''','
set @updatestat =@updatestat+' DisplayInd='
end

IF (@DisplayInd IS NULL)
BEGIN
set @updatestat = @updatestat+ 'null,'
set @updatestat =@updatestat+'EnglishString='
END
else
begin
set @updatestat =@updatestat+ '''' +@DisplayInd+''','
set @updatestat =@updatestat+' EnglishString='
end


IF (@EnglishString IS NULL)
BEGIN
set @updatestat = @updatestat+ 'null,'
set @updatestat =@updatestat+' FrenchString='
END
else
begin
set @updatestat =@updatestat+ '''' +@EnglishString+''','
set @updatestat =@updatestat+' FrenchString='
end

IF (@FrenchString IS NULL)
BEGIN
set @updatestat = @updatestat+ 'null,'
set @updatestat =@updatestat+' SpanishString='
END
else
begin
set @updatestat =@updatestat+ '''' +@FrenchString+''','
set @updatestat =@updatestat+' SpanishString='
end

IF (@SpanishString IS null)
BEGIN
set @updatestat = @updatestat+ 'null,'
set @updatestat =@updatestat+' GermanString='
END
else
begin
set @updatestat =@updatestat+ '''' +@SpanishString+''','
set @updatestat =@updatestat+' GermanString='
end

IF (@GermanString IS null)
BEGIN
set @updatestat = @updatestat+ 'null,'
set @updatestat =@updatestat+' Device='
END
else
begin
set @updatestat =@updatestat+ '''' +@GermanString+''','
set @updatestat =@updatestat+' Device='
end

IF(@Device IS null)
BEGIN
set @updatestat = @updatestat+ 'null,'
set @updatestat =@updatestat+' StepState='
END
else
begin
set @updatestat =@updatestat+ '''' +@Device+''','
set @updatestat =@updatestat+' StepState='
end

IF (@StepState IS null)
BEGIN
set @updatestat = @updatestat+ 'null,'
set @updatestat =@updatestat+' Tag='
END
else
begin
set @updatestat =@updatestat+ '' +convert(varchar(8),@StepState)+','
set @updatestat =@updatestat+' Tag='
end

IF(@Tag IS NULL )
BEGIN
set @updatestat = @updatestat+ 'null'
END
else
begin
set @updatestat =@updatestat+ '''' +@Tag+''''
end

set @updatestat= @updatestat +' where EventId='+convert (varchar(8),@EventId)
print @updatestat
--print 'UPDATE EVENTS SET UseExtParmInd='''+@UseExtParmInd+''',DisplayInd='''+@DisplayInd+''',EnglishString='''+@EnglishString+''',FrenchString='''+@FrenchString+'SpanishString='''+@SpanishString+'GermanString='''+@GermanString+'Device='''+@Device+'StepState='++CONVERT(VARCHAR(4), @StepState)+','+'Tag='''+@Tag+'''' +' where EventID='++convert(varchar(4),@eventid)++' and Eventdesc='++convert(varchar(4),@Eventdesc)
FETCH NEXT FROM Update_cursor INTO @EventId, @EventDesc,@UseExtParmInd,
@DisplayInd,@EnglishString,@FrenchString,@SpanishString,@GermanString,@Device,@StepState,@Tag
END
CLOSE Update_cursor
DEALLOCATE Update_cursor

END

No comments:

Post a Comment