使用以下代码试验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
我需要做什么才能使用参数调用过程,具体取决于参数名称而不是代码构造参数的顺序?