Sql server 如何通过在中选择来执行存储过程,而不是=
如何通过vb.net和mssql存储过程中的select in代替=执行存储过程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)
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