Sql 将数据表传递到存储过程中。有更好的办法吗?
数据表能否以某种方式传递到SQLServer2005或2008 我知道seesm的标准方法是将XML传递给SP,并且可以通过某种方式将数据表轻松转换为XML 将.NET对象传递到SP怎么样?可能吗Sql 将数据表传递到存储过程中。有更好的办法吗?,sql,stored-procedures,clr,Sql,Stored Procedures,Clr,数据表能否以某种方式传递到SQLServer2005或2008 我知道seesm的标准方法是将XML传递给SP,并且可以通过某种方式将数据表轻松转换为XML 将.NET对象传递到SP怎么样?可能吗 我记得在2008年不知何故听说过SQL和CLR一起工作,但我一直不明白。。也许这意味着您可以在存储过程中引用.NET对象?您可以在SQL中创建用户定义的表类型。然后,在存储过程中,接受类型为(用户定义的表类型)的参数,并将datatable作为其值传递给存储过程 以下是以下几个例子: 在SQL中: C
我记得在2008年不知何故听说过SQL和CLR一起工作,但我一直不明白。。也许这意味着您可以在存储过程中引用.NET对象?您可以在SQL中创建用户定义的表类型。然后,在存储过程中,接受类型为(用户定义的表类型)的参数,并将datatable作为其值传递给存储过程 以下是以下几个例子: 在SQL中:
CREATE TYPE dbo.CategoryTableType AS TABLE
( CategoryID int, CategoryName nvarchar(50) )
然后:
否则,您可以选择SQl批量插入 我试过,最好的办法
enter code here
Using dbConn As New SqlConnection(connectionStr)
dbConn.Open()
countStart = System.Convert.ToInt32(commandRowCount.ExecuteScalar())
Using bulkcopy As SqlBulkCopy = New SqlBulkCopy(dbConn)
bulkcopy.DestinationTableName = "[dbo].[DocumentScan]"
Try
' Write from the source to the destination.
bulkcopy.WriteToServer(newDataTable)
Catch ex As Exception
Console.WriteLine(ex.Message)
End Try
Dim countEnd As Long = _
System.Convert.ToInt32(commandRowCount.ExecuteScalar())
End Using
这仅适用于SQL Server 2008和更新版本-在2005年不起作用:-(我们使用的是2008。我把它发给了我的老板。也许他们会听。这比从数据表中传入XML容易,对吗?很好地抓住了2005年不起作用的问题。我认为这比传入XML容易。它的另一个重要用途是当您将项目列表传入存储过程时。通常的做法是创建分隔的list的ID,然后传入并在存储过程中解析它们。使用表类型,您可以传入包含数据的表,然后像普通表一样加入到该表中。好东西。他们读了这篇文章并决定使用它。免费为我喝一杯!
enter code here
Using dbConn As New SqlConnection(connectionStr)
dbConn.Open()
countStart = System.Convert.ToInt32(commandRowCount.ExecuteScalar())
Using bulkcopy As SqlBulkCopy = New SqlBulkCopy(dbConn)
bulkcopy.DestinationTableName = "[dbo].[DocumentScan]"
Try
' Write from the source to the destination.
bulkcopy.WriteToServer(newDataTable)
Catch ex As Exception
Console.WriteLine(ex.Message)
End Try
Dim countEnd As Long = _
System.Convert.ToInt32(commandRowCount.ExecuteScalar())
End Using