【发布时间】:2012-07-26 17:08:34
【问题描述】:
从我的 ASP 应用程序到我的 SQL Server 数据库的连接一直存在超时和登录问题。我的托管服务提供商建议将我的连接字符串从 ODBC DSN 更改为 OLEDB。一旦我这样做了,我在执行我的第一个存储过程时就会收到这个错误。
过程或函数“storedproc”需要参数“@param1”,它 未提供。
这是我的连接字符串
Dim objconn
Set objconn = Server.CreateObject("ADODB.Connection")
objconn.open "Provider=SQLOLEDB;Data Source=localhost\sqlexpress;Initial Catalog=db;user id=user;password=pw"
这是我的存储过程调用
Dim objrs, cmd
Set cmd = Server.CreateObject("ADODB.Command")
Set cmd.ActiveConnection = objconn
cmd.CommandText = "storedproc"
cmd.Parameters.Append(cmd.CreateParameters("param1",adDouble,adParamInput,,session("param1")))
Set objrs = Server.CreateObject("ADODB.Recordset")
objrs.CursorLocatoin = adUseClient
objrs.Open cmd
任何想法为什么我的 proc 调用不适用于不同的连接字符串?
【问题讨论】:
-
您说的是 CreateParameters,但这应该是 CreateParameter,并且您不应该将 create 语句括在括号中,AFAIK。一旦进行了这些更改,它就适用于 ODBC 和 OLEDB。
-
您是否尝试将参数命名为
"@param1"而不是"param1"? -
@Remou:你的意思是对
Append的调用不需要括号对吗? -
是的。我愿意。据我所知,不仅不需要,而且不应该。我用 VBScript 进行了测试,我很确定同样的规则适用。
-
@Remou:是的,他们有,我同意他们不应该不在那里。
标签: sql-server asp-classic odbc oledb