Home Forums SQL Server 2008 T-SQL (SS2K8) How to get the desired output using Stored Procedure RE: How to get the desired output using Stored Procedure

  • Try this if it helps you.

    CREATE FUNCTION [dbo].[fnSplit]

    (

    @sInputList VARCHAR(8000) -- List of delimited items

    , @sDelimiter VARCHAR(8000) = ',' -- delimiter that separates items

    ) RETURNS @List TABLE (item VARCHAR(8000))

    BEGIN

    DECLARE @sItem VARCHAR(8000)

    WHILE CHARINDEX(@sDelimiter,@sInputList,0) <> 0

    BEGIN

    SELECT

    @sItem=SUBSTRING(@sInputList,1,CHARINDEX(@sDelimiter,@sInputList,0)-1),

    @sInputList=SUBSTRING(@sInputList,CHARINDEX(@sDelimiter,@sInputList,0)+DATALENGTH(@sDelimiter),DATALENGTH(@sInputList))

    IF LEN(@sItem) > 0

    INSERT INTO @List SELECT @sItem

    ELSE IF LEN(@sItem) = 0

    INSERT INTO @List SELECT NULL

    END

    IF LEN(@sInputList) > 0

    INSERT INTO @List SELECT @sInputList -- Put the last item in

    RETURN

    END

    GO

    CREATE PROCEDURE [dbo].[TestMulJobsSave]

    (

    @JobIDANdAcctID VARCHAR(MAX),

    @createdby VARCHAR(100) = Null,

    @ModifiedBy VARCHAR(100) = Null

    )

    AS

    Begin

    Insert into [TestMulJobs] (JobID,AcctID,CreatedBy,CreatedDate,ModifiedBy,ModifiedDate)

    SELECT SUBSTRING(Item,1,CHARINDEX('-',Item)-1),SUBSTRING(Item,CHARINDEX('-',Item)+1,LEN(ITEM)),@CreatedBy,@ModifiedBy FROM TEST.dbo.fnSplit(@JobIDANdAcctID,',')

    End

    GO

    EXEC TEST..[TestMulJobsSave] '5654-7,5723-8,5824-3,5654-7',1,1

    Regards,

    Vijay