为什么 adParamOutput 参数执行后不包含值

2024-02-22

我使用 ASP classic 和 ADO,连接到 SQL Server 2008。

我继承了这段代码,它被严重破坏了,我将尝试重新创建相关部分。如果您需要更多详细信息或者我遗漏了某些内容,请告诉我。

我创建一个命令并添加参数

oCmd.CommandType = adCmdStoredProc
...
oCmd.Parameters.Append oCmd.CreateParameter("@MyOutputParam", adInteger, adParamOutput, 4, NULL)

后来,我从该命令打开一个阅读器:

oRS.Open oCmd, , adOpenForwardOnly, adLockReadOnly

之后,当 oRS 打开但在读取任何记录或值之前,我尝试使用以下命令获取输出参数的值one以下几行:

val1 = oCmd("@MyOutputParam")
val2 = oCmd("@MyOutputParam").Value
val3 = oCmd.Parameters("@MyOutputParam").Value

所有三个(val1、val2、val3)变量均为 DB NULL。

我已确认在查询分析器中运行 SP 会向 @MyOutputParam 参数返回一个值:

declare @p33 int
exec usp_GetResultAndOutput 1, 2, 3, @p33 output
select @p33

这将返回我的预期记录的记录集和在单行中显示数字的第二个记录集。

我什至尝试在尝试获取输出参数之前调用 rs.NextRecordset ,但这不起作用。

我需要使用其他方法来处理输出参数吗?

我可以返回记录集和输出参数吗?


无法检索输出参数,直到all枚举记录集直到最后。试想一下,客户端怎么可能在执行完成之前检索到参数的输出值呢?这Execute()通话很简单starting执行时,批处理继续在服务器上执行,直到返回所有结果。当客户端迭代由SELECT批处理正在执行该 SELECT。输出参数的值仅在end该批次的。因此,在批处理完成之前不可能知道输出参数值,这意味着所有语句都已执行,这反过来又要求客户端消耗(迭代)所有结果集。

这是解析一组结果的规范形式:

do
{
  while (rs.MoveNext)
  {
    // do something with the row
  }
} while (Not rs.NextRecordset Is Nothing)
// now is safe to read the out param
response.write oCmd("@MyOutput")
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 adParamOutput 参数执行后不包含值 的相关文章

随机推荐

  • Jquery:将ajax调用的值返回给调用者函数?

    我试图从函数返回 ajax 调用返回的值 但它只返回 未定义 如果 ajax 调用发出警报 响应 它将返回正确的值 这是代码 我做错了什么 insertCandidate live click function e var ids this
  • 复杂的SQL查询建议请

    我有三个表 其架构如下 Table Apps ID bigint USERID Bigint START TIME datetime 1 13 2013 05 03 04 42 55 2 13 2013 05 12 06 22 45 3 1
  • 在python中检测并删除锁定的文件

    我想在 Unix 上使用 python 检测文件是否被锁定 删除该文件是可以的 假设它有助于检测该文件是否被锁定 该文件最初可能是由另一个进程独占打开的 文档似乎表明 如果文件被锁定 os unlink 不一定会返回错误 Ideas 检查文
  • 调用栈和反汇编疑问

    三大疑点 1 假设我得到如下调用堆栈 user32 dll InternalCallWinProc 20 0x28 bytes user32 dll UserCallWinProcCheckWow 32 0xb7 bytes user32
  • C++11 异步仅使用一个核心

    我正在尝试在 C 中并行化一个长时间运行的函数 并使用 std async 它只使用一个核心 并不是函数的运行时间太短 因为我目前使用的测试数据大约需要 10 分钟才能运行 根据我的逻辑 我创建了 NThreads 的 Futures 每个
  • 在个人网站上使用 Google Chrome 的 OmniBox [TAB] 功能?

    我认为标题解释了一切 但无论如何我都会更深入地探讨我的问题 如何在我的网站上使用 Chrome 的多功能框 TAB 功能 由于许多用户要求我在网站上实现该功能 我对 OpenSearchDescription 进行了研究 并且在 FireF
  • Scope_Identity()、Identity()、@@Identity 和 Ident_Current() 之间有什么区别?

    I know Scope Identity Identity Identity and Ident Current 所有人都获得身份列的值 但我很想知道其中的区别 我遇到的部分争议是 应用于上述这些函数的范围是什么意思 我还想要一个使用它们
  • 使用 AngularJs 处理 Play scala 发送的分块数据

    I send chunked data with Play Scala 2 2像这样的客户端 Ok chunked data 我想在客户端可用后立即使用它们 如果我只是获取数据并将其打印出来 success 它们同时打印 即收到最后一个数据
  • python:tkinter树视图颜色没有更新

    这是我的第一篇文章 如果格式有误 请原谅 如果需要 我很乐意更改 我正在使用 Tkinter 创建一个用于科学数据分析的界面 对于分子列表 可以在单独的图中表示四个分子 另一方面 我使用树视图显示有关所有分子的一些数字 不仅仅是显示的 当树
  • 在 Cartopy、Robinson 投影中绘制直线

    我正在玩 cartopy 试图了解它是如何工作的 我尝试的第一件事与中的示例非常相似the docs https scitools org uk cartopy docs v0 16 matplotlib intro html在 将数据添加
  • 如何防止点击子表单导致主表单更新

    我的预订系统中有一个表单 其中包含一个子表单 该子表单是 Access 2010 不再具有的旧 ActiveX 日历控件的复制品 一个特殊用途是创建新预订 这意味着该表单 位于 新记录上 但是 在我确定所有数据都经过正确验证之前 我不希望写
  • 发送带有附件的电子邮件

    我有一个邮件程序如下 class Payments LateNoticesMailer lt AsyncMailer def notice payment id payment PaymentDecorator find payment i
  • 按返回不会返回到上一个片段

    我在将片段事务添加到返回堆栈时遇到问题 我有一个主要活动 其中我使用菜单片段填充布局 public class MainActivity extends ActionBarActivity Override protected void o
  • 单个表的多个外键和指向多个表的单个键

    我需要数据库设计专家的一些建议 我在一个表中有大约六个外键 缺陷 它们都指向用户表中的主键 它像是 defect assigned to created by updated by closed by 如果我想获取有关缺陷的信息 我可以进行
  • Java中pom.xml文件有什么用? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 POM 文件的主要特征是什么 为什么实际使用它 无论我们在其中提供什么 依赖项如何映射到 Java 虚拟机并在应用程序上变得灵活 项目对象
  • 如何在 MATLAB/Octave 中获得真正的整数溢出?

    我正在为 MATLAB Octave 中的一些 VHDL 代码开发验证工具 因此 我需要生成 真实 溢出的数据类型 intmax int32 1 ans 2147483648 稍后 如果我可以定义变量的位宽度 将会很有帮助 但现在这并不那么
  • 我的最近对问题的分而治之算法的逻辑有什么问题?

    我一直在关注 Coursera 的算法课程 并提出了关于最近对问题的分治算法的想法 我想澄清这一点 根据 Roughgarden 教授的算法 你可以看到here https class coursera org algo 2012 002
  • iOS:澄清不同的搜索路径

    XCode Build Settings 中有三种不同的搜索路径 框架搜索路径 标头搜索路径 库搜索路径 谁能澄清这些路径的作 用以及它们的用途吗 框架搜索路径 在哪里搜索构架 http developer apple com librar
  • 为什么 (0>1 + 0>9) 返回 False,而 ((0>1) + (0>9)) 返回 0?

    在Python中添加布尔表达式时 似乎将它们括在括号中会将它们转换为int当您添加它们时 但不这样做会保留它们的类型 gt gt gt 0 gt 1 0 gt 9 0 gt gt gt 0 gt 1 0 gt 9 False gt gt g
  • 为什么 adParamOutput 参数执行后不包含值

    我使用 ASP classic 和 ADO 连接到 SQL Server 2008 我继承了这段代码 它被严重破坏了 我将尝试重新创建相关部分 如果您需要更多详细信息或者我遗漏了某些内容 请告诉我 我创建一个命令并添加参数 oCmd Com