将表rrecordset传递到SQL服务器

问题描述 投票:0回答:1

下午好,专家!

我遇到的问题类型与平时非常不同。过去,我通过“通过查询”将单行传递给服务器,有时需要传递多个记录时,我利用循环功能多次将数据发送到服务器。但是,如果我有40多个记录行,则该循环将花费大量时间才能完成。我只是想知道是否有一种方法可以使用循环将表集发送到服务器,而不是使用循环移动X步。

这是我在Access端使用的代码,该代码附加到表单中的按钮上(recordsource是本地访问表):

Dim db As dao.Database
Dim rs As dao.Recordset
Dim qdf As dao.QueryDef
Dim strSQL As String

Set db = CurrentDb
Set rs = Me.Recordset

rs.MoveLast
rs.MoveFirst

Do While Not rs.EOF
Set qdf = db.QueryDefs("Qry_Send_ClientData") 'local pass through query

strSQL = "EXEC dbo.SP_Client_Referral @JunctionID='" & Me.ClientID & "', @Note='" & Replace(Me.Txt_Note, "'", "") & "', @Value1='" & Txt_Value1 & "', @Value2='" & Txt_Value2 & "'"

qdf.SQL = strSQL
db.Execute "Qry_Send_ClientData"

rs.MoveNext
Loop

Msgbox "All Client Added!", , "Add client"

现在在SQL Server端,我具有以下存储过程(dbo.SP_Client_Referral),该存储过程从直通查询接收数据并将代码行插入到特定表中

    @ClientID AS NVARCHAR(15),
    @Note As NVARCHAR(500),
    @Value1 As NVARCHAR(50),
    @Value2 As NVARCHAR(50)
AS  

BEGIN

    SET NOCOUNT ON;

        BEGIN
        INSERT INTO dbo.Client_Data(ClientID, Note, Value_1, Value_2)
        SELECT @ClientID, @Note, @Value1, @Value2
        END

END

对于单个记录或什至最多10条记录,此方法相对较快。但是,随着记录数量的增加,所需的时间可能会很长。如果有一种方法可以将表(即使用LocalTable的SELECT *访问侧)传递给SQL服务器,因为反对逐行传递肯定会节省大量时间。只是想知道此方法是否存在,是否可以发送表,以及在SP的SQL服务器端必须使用什么才能接收表记录。或者,我可能不得不继续使用这种单行方法,并可能使其效率更高,以便执行得更快。

非常感谢您的协助!

专家下午好!我遇到的问题类型与平时非常不同。过去,我通过“通过查询”将单行传递到服务器,有时需要传递...

sql-server tsql ms-access access pass-through
1个回答
0
投票

您可以尝试将XML数据传递到存储过程。

© www.soinside.com 2019 - 2024. All rights reserved.