当我们在VBA中使用ADO在没有数据库名称的情况下调用DBMS存储过程时:
Dim cmd As New ADODB.Command
cmd.ActiveConnection = CurrentProject.Connection
cmd.CommandType = adCmdStoredProc
cmd.CommandText = "SomeProc"
cmd.Parameters(1) = "someArg"
cmd.Execute
ADO自动填充cmd.Parameters集合,可以使用了。我们可以在VBA编辑器的“本地”窗口中看到它。但是,如果使用数据库名称指定了过程名称,并且/或者对于MS SQL Server,则指定了架构名称(DbName.dbo.SomeProc
),则不会填写参数,并且会出现以下错误:
运行时错误'-2147217904(80040e10)':
过程或函数'
'需要未提供的参数'@ '。
该过程可以位于当前数据库中(连接字符串的Initial Catalog
中),在第一种情况下,使用全名的调用将失败,但简短的则不会。我们可以手动将参数附加到集合中,但是第一种情况呢?
指定数据库名称后,是否可以使ADO准备Parameter对象?