从VBA调用SQL存储过程 - ADO - 命名参数

时间:2018-02-01 10:15:42

标签: sql-server excel vba stored-procedures ado

使用以下代码试验VBA ADO以调用存储过程(带有三个参数@ p1,@ p2,@ p3),将数据写入SQL表(包含三列p1,p2,p3)。

尽管将NamedParameters设置为true,但参数名称虽然填充在Parameter对象中,但似乎不会反馈到SQL,即在SQL表中我得到< P1,P2,P3> =< 7,8,9>而不是< 7,9,8>。

Sub UploadShareclassDatatoDB()
Dim Conn As ADODB.Connection
Dim ADODBCmd As ADODB.Command
Dim rs As ADODB.Recordset

NamedParameters = True

Dim i As Integer
Dim sConnect As String

sConnect = "Provider=SQLOLEDB.1;User ID=**;Password=**;Initial Catalog=**;Data Source=**;"

Set Conn = New ADODB.Connection
Conn.ConnectionString = sConnect
Conn.Open

Set ADODBCmd = New ADODB.Command
ADODBCmd.ActiveConnection = Conn
ADODBCmd.CommandText = "test"
ADODBCmd.CommandType = adCmdStoredProc

ADODBCmd.Parameters.Append ADODBCmd.CreateParameter("@p1", adInteger, adParamInput, , 7)
ADODBCmd.Parameters.Append ADODBCmd.CreateParameter("@p3", adInteger, adParamInput, , 8)
ADODBCmd.Parameters.Append ADODBCmd.CreateParameter("@p2", adInteger, adParamInput, , 9)

Set rs = ADODBCmd.Execute()

End Sub

我需要做什么才能使用参数调用过程,具体取决于参数名称而不是代码构造参数的顺序?

0 个答案:

没有答案