【问题标题】:How i put multiple values in procedure while in? vb.net [duplicate]我如何在程序中输入多个值? vb.net [重复]
【发布时间】:2023-04-11 06:48:01
【问题描述】:

我在 vb.net 中有这样的 @values 代码:

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

我的程序是这样的:

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

如何在我的程序中输入多个值,我想为数据库的 4 个不同行输入 @values 1,2,3,4

如果我输入这样的 Sql 代码,但不适用于我的程序:

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))

非常感谢

【问题讨论】:

    标签: sql-server vb.net stored-procedures


    【解决方案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
    

    【讨论】:

    • "xmldt 方法 'notes' 只能在 xml 类型的列上调用"
    • 工作,非常感谢!祝您有美好的一天!
    猜你喜欢
    • 2021-09-12
    • 1970-01-01
    • 1970-01-01
    • 2015-12-19
    • 2023-04-05
    • 2021-10-29
    • 1970-01-01
    • 1970-01-01
    • 2019-05-30
    相关资源
    最近更新 更多