Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 如何通过在中选择来执行存储过程,而不是=_Sql Server_Vb.net_Stored Procedures - Fatal编程技术网

Sql server 如何通过在中选择来执行存储过程,而不是=

Sql server 如何通过在中选择来执行存储过程,而不是=,sql-server,vb.net,stored-procedures,Sql Server,Vb.net,Stored Procedures,如何通过vb.net和mssql存储过程中的select in代替=执行存储过程 Dim sSQL As String Dim objConn As SqlConnection Dim objcmd As SqlCommand Dim da As SqlDataAdapter Dim ds = New DataSet() sSQL = "getinvoice" objConn = utility.getconnect objcmd = New SqlCommand(sSQL, objConn)

如何通过vb.net和mssql存储过程中的select in代替=执行存储过程

Dim sSQL As String
Dim objConn As SqlConnection
Dim objcmd As SqlCommand
Dim da As SqlDataAdapter
Dim ds = New DataSet()

sSQL = "getinvoice"
objConn = utility.getconnect
objcmd = New SqlCommand(sSQL, objConn)
objcmd.CommandType = CommandType.StoredProcedure
objcmd.Parameters.Add("@invoiceid", SqlDbType.VarChar)
objcmd.Parameters.Item("@invoiceid").Value = "1,5,13,18"    '<-- problem
da = New SqlDataAdapter(objcmd)
da.Fill(ds)

ALTER PROCEDURE [dbo].[getinvoices]
@invoiceid varchar(50)
AS
BEGIN
select * from invoice where invoiceid in @invoiceid     '<-- problem
END
Dim sSQL作为字符串
Dim objConn作为SqlConnection
Dim objcmd As SqlCommand
Dim da作为SqlDataAdapter
Dim ds=新数据集()
sSQL=“获取发票”
objConn=utility.getconnect
objcmd=newsqlcommand(sSQL,objConn)
objcmd.CommandType=CommandType.StoredProcess
objcmd.Parameters.Add(“@invoiceid”,SqlDbType.VarChar)

objcmd.Parameters.Item(“@invoiceid”).Value=“1,5,13,18”我认为您需要使用动态查询。将程序更改为

ALTER PROCEDURE [dbo].[getinvoices]
    @invoiceid varchar(50)
    AS
    BEGIN
    declare @sql nvarchar(4000)
    set @sql =' select * from invoice where invoiceid in  ( '+ @invoiceid     +')' 
    EXEC (@sql)
    END
或者使用拆分函数将值拆分为一个表变量(有很多拆分函数,快速搜索会抛出一个)


没有函数dbo.splitstring存在,需要自己创建吗?如何创建?是的,必须。。检查这个链接,这是你可以使用@ShijuShaji的最糟糕的拆分器。阅读以下内容:将
@invoiceid
作为表类型传递,然后加入它。
 ALTER PROCEDURE [dbo].[getinvoices] @invoiceid VARCHAR(50)
AS 
    BEGIN
        SELECT  *
        FROM    invoice
        WHERE   invoiceid IN ( SELECT   *
                               FROM     dbo.splitstring(@invoiceid) )

    END