1

I have code in vb.net with @values like this:

Dim con As New SqlConnection
                            Dim cmd As New SqlCommand

                            con = FunctionConnection()
                            cmd.Connection = con

                            cmd.CommandText = "GetVerification"
                            cmd.CommandType = CommandType.StoredProcedure
                            cmd.Parameters.AddWithValue("@Value", "1,2,3,4")

                            Dim Header_DataReader As SqlDataReader = Nothing

                            con.Open()
                            Header_DataReader = cmd.ExecuteReader

And my procedure like that:

ALTER PROCEDURE GetVerification (@Value varchar(255))
as
BEGIN

SELECT        id, ControlPlanID, ParagraphID, ParagraphOrder, Specification, SpecificationParagraph, Dimension, Description, Samples, Frequency, ActivityResource, 
                         ActivityName, Observation, RequrementNom, RequrementPlus, RequrementMinus, Units
FROM            CP_Sequence
WHERE        (ParagraphOrder IN (@Value))
End

How put multilple values in my procedure, i want to put in @values 1,2,3,4 for 4 different rows for database

if i put in Sql code like this work but not for my procedure:

SELECT        id, ControlPlanID, ParagraphID, ParagraphOrder, Specification, SpecificationParagraph, Dimension, Description, Samples, Frequency, ActivityResource, 
                         ActivityName, Observation, RequrementNom, RequrementPlus, RequrementMinus, Units
FROM            CP_Sequence
WHERE        (ParagraphOrder IN (1, 2, 3, 4))

Thanks a lot

1 Answers1

1
ALTER PROCEDURE dbo.GetVerification (@Value VARCHAR(255))
AS
BEGIN

    SET NOCOUNT ON

    DECLARE @a TABLE (ID INT PRIMARY KEY WITH (IGNORE_DUP_KEY=ON))
    INSERT INTO @a
    SELECT t.c.value('.', 'INT')
    FROM (SELECT x = CAST('<t>' + REPLACE(@Value, ',', '</t><t>') + '</t>' AS XML)) r
    CROSS APPLY r.x.nodes('/t') t(c)

    SELECT *
    FROM dbo.CP_Sequence
    WHERE ParagraphOrder IN (SELECT * FROM @a)
    OPTION(RECOMPILE)

END
Devart
  • 119,203
  • 23
  • 166
  • 186