我正在尝试将一些参数传递给经典 ASP 中的 SQL 存储过程。我看过几篇关于此的帖子,不确定我做错了什么,因为我似乎没有看到我的差异。
set conn = CreateObject("ADODB.Connection")
conn.open ("DSN=SERVER;UID=username;PWD=pwd;Database=MyDatabase")
set cmd = Server.CreateObject("ADODB.Command")
set cmd.ActiveConnection = conn
cmd.CommandType = adCmdStoredProc
cmd.CommandText = my_proc
cmd.Parameters.Refresh
cmd.Parameters(1) = "MyParam"
set rs = cmd.execute
我收到错误
Arguments are of the wrong type, are out of acceptable range, or are in conflict
with one another.
在线上cmd.CommandType = adCmdStoredProc
。我也尝试按照以下方式执行此操作,但出现相同的错误
set conn = CreateObject("ADODB.Connection")
conn.open ("DSN=SERVER;UID=username;PWD=pwd;Database=MyDatabase")
set cmd = Server.CreateObject("ADODB.Command")
set cmd.ActiveConnection = conn
cmd.CommandType = adCmdStoredProc
cmd.CommandText = my_proc
cmd.Parameters.Refresh
cmd.Parameters.Append cmd.CreateParameter("@MyParam, adVarWChar, adParamInput, 50, "test")
set rs = cmd.execute
@KekuSemau https://stackoverflow.com/users/1689180/kekusemau 是正确的 https://stackoverflow.com/a/26766103/692942但让我建议一种比使用更有效和更易于管理的方法adovbs
常量文件。
METADATA 允许您定义对 DLL 常量的引用,即使您在经典 ASP 环境中使用后期绑定也是如此。可能值得一提的是,您可以在各个页面中添加元数据引用,但话又说回来,为什么要这样做呢?
要使用它,只需将 METADATA 标签添加到您的global.asa
文件(应位于 Web 应用程序的根目录中)。
<!--
METADATA TYPE="typelib" FILE="C:\Program Files\Common Files\System\ADO\msado20.tlb"
-->
根据系统的不同,ADO 类型库可能有所不同,请调整FILE
相应地属性。
我在所有应用程序中使用这种方法,主要是为了引用 ADO 和 CDO 类型库中的常量。
ADO 类型库
<!--
METADATA
TYPE="typelib"
FILE="c:\program files\common files\system\ado\msado15.dll"
-->
CDO 类型库
<!--
METADATA
TYPE="typelib"
UUID="CD000000-8B95-11D1-82DB-00C04FB1625D"
NAME="CDO for Windows 2000 Library"
-->
这些是我个人参考的示例,文件位置可能不同,而UUID
属性应该完全相同。
重要的:
请记住删除对以下内容的任何引用adovbs
常量包含文件(adovbs.inc
or adovbs.asp
通常)使用时METADATA
方法在你的global.asa
或者你会得到一个
Name redefined error
Also METADATA
仅在 IIS 4.0 及更高版本中可用。
有用的链接
-
使用 METADATA 导入 DLL 常量 https://web.archive.org/web/20210417073339/http://www.4guysfromrolla.com/webtech/110199-1.shtml (推荐阅读)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)