下午好,专家!
我遇到的问题类型与平时非常不同。过去,我通过“通过查询”将单行传递给服务器,有时需要传递多个记录时,我利用循环功能多次将数据发送到服务器。但是,如果我有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服务器端必须使用什么才能接收表记录。或者,我可能不得不继续使用这种单行方法,并可能使其效率更高,以便执行得更快。
非常感谢您的协助!
专家下午好!我遇到的问题类型与平时非常不同。过去,我通过“通过查询”将单行传递到服务器,有时需要传递...
您可以尝试将XML数据传递到存储过程。