通过创建一个包含内部数据集的 SQL2005 CLR 存储过程,我很容易做到这一点。
您会看到,一个新的 SqlDataAdapter 默认情况下会将一个多结果集存储过程填充到一个多表数据集中。这些表中的数据可以依次插入到您希望编写的调用存储过程中的#Temp 表中。 dataset.ReadXmlSchema将向您显示每个结果集的架构。
第 1 步:开始编写 sproc,它将从多结果集 sproc 中读取数据
一种。根据架构为每个结果集创建一个单独的表。
CREATE PROCEDURE [dbo].[usp_SF_Read] AS
SET NOCOUNT ON;
CREATE TABLE #Table01 (Document_ID VARCHAR(100)
, Document_status_definition_uid INT
, Document_status_Code VARCHAR(100)
, Attachment_count INT
, PRIMARY KEY (Document_ID));
湾。此时您可能需要声明一个游标来重复调用您将在此处创建的 CLR 存储过程:
第 2 步:制作 CLR Sproc
Partial Public Class StoredProcedures
<Microsoft.SqlServer.Server.SqlProcedure()> _
Public Shared Sub usp_SF_ReadSFIntoTables()
End Sub
End Class
一种。使用 连接New SqlConnection("context connection=true")
。
湾。设置一个命令对象 (cmd) 以包含多结果集存储过程。
C。使用以下命令获取所有数据:
Dim dataset As DataSet = New DataSet
With New SqlDataAdapter(cmd)
.Fill(dataset) ' get all the data.
End With
'you can use dataset.ReadXmlSchema at this point...
d。遍历每个表并将每一行插入适当的临时表(您在上面的第一步中创建)。
最后一点:
根据我的经验,您可能希望在表之间强制执行一些关系,以便知道每条记录来自哪个批次。
这就是它的全部!
〜肖恩,西雅图附近