• ard5karthick (9/26/2012)


    Hi Sivaji,

    The below procedure must solve your problem...

    Use SSISTest

    GO

    -- Exec SplitStringInsert '1-2,2-3,3-5,4-4,14-14,10-9684'

    Alter Procedure SplitStringInsert (@String Varchar(8000))

    AS

    Begin

    Declare @BeginingPosition int;

    Declare @TrunPosition int;

    Declare @Length int

    --Set @String = '1-2,2-3,3-5,4-4,14-14,10-9684'

    Set @BeginingPosition = 0

    Set @Length = LEN(@String)

    Create Table ##SetString(QuestionAnswer Varchar(8000))

    DECLARE @question table

    (

    alid uniqueidentifier,

    QuestionId int,

    crdate datetime,

    IsActive bit

    )

    DECLARE @Choice table

    (

    imid int,

    alid uniqueidentifier,

    Choiceid int

    )

    While (CHARINDEX(',',@String,0) <> 0)

    Begin

    Set @TrunPosition = CHARINDEX(',',@String,@BeginingPosition)

    --Select @TrunPosition

    Insert into ##SetString (QuestionAnswer)

    Select SUBSTRING(@String,@BeginingPosition,@TrunPosition)

    Set @String = SUBSTRING(@String,@TrunPosition+1,@Length)

    --Select @String

    Set @Length = LEN(@String)

    END

    Insert into ##SetString (QuestionAnswer)

    Select @String

    SELECT NEWID() ID, SUBSTRING(QuestionAnswer,1,CHARINDEX('-',QuestionAnswer,0)-1) Question

    into ##Question

    FROM ##SetString

    Select SUBSTRING(QuestionAnswer,1,CHARINDEX('-',QuestionAnswer,0)-1) Ques,

    SUBSTRING(QuestionAnswer,CHARINDEX('-',QuestionAnswer,0)+1,@Length) Answer

    into ##Answer

    From ##SetString

    Insert INTO @question (alid ,

    QuestionId ,

    crdate ,

    IsActive )

    SELECT ID,Question, NULL,NULL

    FROM ##Question

    Insert INTO @Choice

    (imid ,

    alid ,

    Choiceid )

    Select Question, ID,Answer

    From ##Question join ##Answer on Ques = Question

    Select * From @Choice

    Select * From @question

    --Drop Table ##SetString

    --Drop table ##Question

    --Drop table ##Answer

    End

    I will put my solution up againsts this one any day. Guess tonight I work on a 1,000,000 row test to test them both.