asp-classic - 从经典 ASP 执行存储过程

标签 asp-classic vbscript

出于某种奇妙的原因,我发现自己正在调试经典 ASP 页面中的问题(在过去的 2 天内至少失去了 10 年的生命)。

我正在尝试执行一个包含一些 OUT 参数的存储过程。问题是存储过程返回时未填充 OUT 参数之一。我可以从 SQL 管理工作室(这是 2008 年)执行存储过程,并且所有值都按照预期设置和返回。

declare @inVar1 varchar(255)
declare @inVar2 varchar(255)
declare @outVar1 varchar(255)
declare @outVar2 varchar(255)

SET @inVar2  = 'someValue'

exec theStoredProc @inVar1 , @inVar2 , @outVar1 OUT, @outVar2 OUT

print '@outVar1=' + @outVar1
print '@outVar2=' + @outVar2 

效果很好。极好的。完美的。正在返回并打印出我期望的确切值。

是的,因为我正在尝试调试经典 ASP 页面,所以我将代码复制到 VBScript 文件中以尝试缩小问题的范围。

这是我想出的:
Set Conn = CreateObject("ADODB.Connection")
Conn.Open "xxx"

Set objCommandSec = CreateObject("ADODB.Command")
objCommandSec.ActiveConnection = Conn

objCommandSec.CommandType = 4
objCommandSec.CommandText = "theStoredProc "

objCommandSec.Parameters.Refresh

objCommandSec.Parameters(2) = "someValue"

objCommandSec.Execute

MsgBox(objCommandSec.Parameters(3))

不起作用。一点儿都没有。 (我生命中的又一个十年白费了) 第三个参数只是 NULL - 这也是我在 Classic ASP 页面中遇到的情况。

有人可以对此有所了解吗?我是否认为经典的 ASP 代码与 VBScript 代码相同?我认为它使用相同的脚本引擎和语法,所以我应该没问题,但我不是 100% 确定。

我从 VBScript 中看到的结果与我在 ASP 中看到的结果相同。

最佳答案

尝试

With objCommandSec
 Set .ActiveConnection = Conn
 .CommandType = 4
 .CommandText = "theStoredProc"
 .Parameters.Append .CreateParameter("@inVar1", 200, 1, 255, VALUE1)
 .Parameters.Append .CreateParameter("@inVar2", 200, 1, 255, VALUE2)
 .Parameters.Append .CreateParameter("@outVar1", 200, 2, 255)
 .Parameters.Append .CreateParameter("@outVar2", 200, 2, 255)

 .Execute

 Response.Write .Parameters(3).Value
End With 

你也应该避免 .Refresh如果您知道参数详细信息,因为它涉及返回服务器的旅程。

关于asp-classic - 从经典 ASP 执行存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2689736/

相关文章:

java - asp classic sql server 2005无法连接

javascript - 单选按钮已选中

visual-studio - 有没有人能够使用 Visual Studio 2005 或更高版本调试 asp 经典代码?

windows - 发出错误检查通过 VBScript 运行的批处理文件

cookies - 如何检索 ASP cookie 的 'Expires' 属性值?

VBScript,文本到剪贴板以粘贴到任何字段

asp-classic - 在经典 ASP 中使用 Response.Write 进行调试

asp-classic - 经典asp中的连接字符串

vbscript - 如何使用vbscript读取注册表项的所有值?

html - 在 HTA (VBS) 中动态更新表行