PL/SQL 存储过程输出游标到 VBA ADODB.RecordSet?

2024-01-30

在这篇文章的序言中,我想说我对 Excel 2007 vba 宏相当陌生。我正在尝试调用一个以游标作为输出参数的 Oracle PL/SQL 存储过程。程序规范如下所示:

PROCEDURE get_product
(
    out_cur_data    OUT SYS_REFCURSOR,
    rptid           IN  NUMBER,
    scenario        IN  VARCHAR2
);

我将我的宏编写为:

Sub GetProduct()
    Const StartRow As Integer = 4
    Dim conn As ADODB.Connection
    Set conn = New ADODB.Connection
    With conn
        .ConnectionString = "<my connection string>"
        .Open
    End With

    Dim cmd As ADODB.Command
    Set cmd = New ADODB.Command
    With cmd
        .ActiveConnection = conn
        .CommandType = adCmdText
        .CommandText = "{call their_package.get_product({out_cur_data 100},?,?)}"
        .NamedParameters = True
        .Parameters.Append cmd.CreateParameter("rptid", adNumeric, adParamInput, 0, 98)
        .Parameters.Append cmd.CreateParameter("scenario", adVarChar, adParamInput, 4, "decline001")
    End With

    Dim rs As ADODB.Recordset
    Set rs = New ADODB.Recordset
    With rs
        .CursorType = adOpenStatic
        .CursorLocation = adUseClient
        .LockType = adLockOptimistic
    End With

    Set rs = cmd.Execute

    Cells(StartRow + 1, 1).CopyFromRecordset rs

    rs.Close
    conn.Close
End Sub

这显然不起作用,我收到运行时错误“-2147217900 (80040e14):处理命令期间发生一个或多个错误。”那么好吧。

我正在寻找一些有关如何将该光标带回 ADODB.RecordSet 的指导/建议。我认为我没有为“out_cur_data”正确设置输出光标,但到目前为止我在网上寻找任何帮助都没有结果。谁能给我一个基本的工作示例来帮助我理解我做错了什么?

顺便说一句...我根本无法控制存储过程,它来自外部包。

非常感谢任何帮助。

谢谢, 多兰


我想应该是这个:

With cmd
    .Properties("PLSQLRSet") = TRUE
    .ActiveConnection = conn
    .CommandType = adCmdText
    .CommandText = "{call their_package.get_product(?,?)}"
    .NamedParameters = True
    .Parameters.Append cmd.CreateParameter("rptid", adNumeric, adParamInput, 0, 98)
    .Parameters.Append cmd.CreateParameter("scenario", adVarChar, adParamInput, 4, "decline001")
End With
...

Set rs = cmd.Execute
cmd.Properties("PLSQLRSet") = FALSE

Note:虽然 their_package.get_product() 采用三个参数,但只需要绑定两个,因为 Ref 游标参数由提供者自动绑定。

有关更多信息,请查看 Oracle 文档:Oracle Provider for OLE DB 开发人员指南 - “将 OraOLEDB 与 Visual Basic 结合使用” http://docs.oracle.com/cd/E11882_01/win.112/e17726/using.htm#OLEDB219

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PL/SQL 存储过程输出游标到 VBA ADODB.RecordSet? 的相关文章

  • Countif 不适用于小时和/或日期

    您好 我有 3 列内的数据 A 目的地 例如洛杉矶 B 承运人 例如 Ups C 发货时间 预计 4 00 使用的时间是24小时时间 不含Am Pm 我需要进行计数才能知道在特定时间我们有多少批货物 尝试过 COUNTIF A1 A100
  • 在 MS Outlook 中,报告所有未收到回复的已发送邮件

    我每天都会发送大量电子邮件 但常常无法跟踪哪些邮件得到了实际回复 有没有办法使用 VBA 脚本查看上周发送的所有消息 并检查他们是否收到回复 具体来说 是一份已发送电子邮件的报告 这些电子邮件尚未从至少一个发送到的地址收到回复 我了解一点
  • MS Access 表单按钮,允许用户浏览/选择文件,然后将文件导入到表中

    在我的数据库中 我可以使用以下命令创建命令按钮导入文件 DoCmd TransferText acImportDelim 导入的原始数据 导入规范 导入的原始数据 D Users Denise Griffith Documents Grif
  • 使用 R Shiny 从 XLConnect 下载 Excel 文件

    有没有人尝试过使用 R Shiny 中的下载处理程序通过 XLConnect 下载新创建的 Excel 文件 在 ui R 中有一行不起眼的行 downloadButton downloadData Download 在 server R
  • 将范围内的每个值乘以常数,但跳过空白单元格

    我需要一个简单快速的解决方案 用于将范围内的所有值乘以 VBA 代码中的数值 我知道这个解决方案 将整个范围乘以值 https stackoverflow com questions 18990541 multiply entire ran
  • 递归 SQL 给出 ORA-01790

    使用 Oracle 11g 第 2 版 以下查询给出 ORA 01790 表达式必须与相应表达式具有相同的数据类型 with intervals time interval AS select trunc systimestamp from
  • 授予用户在查询时使用表索引的什么?

    我想知道当用户从表中查询数据并且该用户已被授予以下权限时 oracle 是否使用索引 grant select on table to user 我想知道是否需要其他拨款才能使用索引 不 没有要求 或能力 授予对索引的访问权限 如果用户可以
  • 如何在VBA编辑器中跳转到行号?

    我在 Office 2010 中使用 VBA 在顶部 有一个带有行号和列号的框 例如 Ln 1480 Col 17 有没有办法在代码编辑中 而不是在执行中 直接跳转到另一个行号 就像我使用的那样Ctrl G在记事本中 这个MSDN答案 ht
  • Excel 工作簿 - 从 C# 读取速度非常慢?

    正在尝试读取 Excel 工作簿 发现读取 3560 行 7 列的工作表需要很长时间 大约需要 1 分 17 秒 我所做的就是循环遍历整个工作表并将值存储在列表中 这是正常现象 还是我做错了什么 static void Main strin
  • 如何使用 Nodejs 创建 Excel 文件?

    我是一名 Nodejs 程序员 现在我有一个数据表 我想将其保存为 Excel 文件格式 我该怎么做呢 我找到了一些 Node 库 但其中大多数是 Excel 解析器而不是 Excel 编写器 我使用的是 Linux 服务器 因此需要一些可
  • VBA Shell 并等待退出代码

    我正在打包一个办公应用程序 VBA 它调用 C 控制台应用程序来执行应用程序 大型模拟程序 的一些繁重工作 我希望能够让 VBA 应用程序等待控制台应用程序完成并从控制台应用程序检索退出代码 我已经能够做到前者 但尚未能够从应用程序中检索退
  • 替换 Oracle 包的一部分

    我需要修改包内的一个过程 我需要接触声明和实施 由于我正在维护每次修改的补丁文件 因此我希望更改最小化 我可以仅使用更改的过程更新包 如果是 如何更新 还是需要提供完整的包定义和实现 您需要替换整个包规范和主体 您不能仅对包的一部分进行操作
  • Office excel将CORS请求作为跨域请求

    我正在尝试从我的 Excel 插件发出跨域请求 正如这里所建议的 http dev office com docs add ins develop addressing same origin policy limitations http
  • 如何找到特定程序的安装目录?

    我已经成功地编写了一些用于工作的 VBA 宏 这些宏基本上创建了一个数据文件 将其提供给一个程序并对该程序的输出进行后处理 我的问题是程序安装路径是硬编码在宏中的 并且安装在我同事的计算机上可能会有所不同 我首先想到的是 我可以从每个人那里
  • SQL Server,插入 Excel“链接服务器”时出现“无效列名”错误

    我有一个简单的 Excel 电子表格文档 运行 Office 2013 我使用 Microsoft Office 15 0 Access 数据库引擎 OLE DB 提供程序 将其用作数据库 我可以使用 MS SQL Server Manag
  • Oracle:使用SQL或PL/SQL查找动态SQL中的错误位置

    如何在 PL SQL 或 SQL 中找到动态 SQL 语句中的错误位置 从 SQL Plus 中 我看到了错误的位置 例如 无效的 SQL DML 语句 SYS orcl gt SELECT 2 X 3 FROM 4 TABLEX 5 TA
  • VBA ByRef 参数类型不匹配

    最初在我的主代码部分中 我有一个丑陋的 if 语句 尽管它会运行丑陋 我决定将其设为我要调用的函数 这导致我收到错误 编译错误 ByRef 参数类型不匹配 我的假设是该函数需要正确引用 尽管我一直在阅读文档并且不明白为什么 gt 声明 Sh
  • APEX 安装失败,PLS-00201:必须声明标识符“SYS.DBMS_DB_VERSION”

    尝试在 Oracle XE 18c 数据库上安装 Oracle APEX 20 2 如下官方说明 https docs oracle com en database oracle application express 20 1 htmig
  • 使用 OpenPyXL 迭代工作表和单元格,并使用包含的字符串更新单元格[重复]

    这个问题在这里已经有答案了 我想使用 OpenPyXL 来搜索工作簿 但我遇到了一些问题 希望有人可以帮助解决 以下是一些障碍 待办事项 我的工作表和单元格数量未知 我想搜索工作簿并将工作表名称放入数组中 我想循环遍历每个数组项并搜索包含特
  • 检查未绑定控件是否具有值的正确方法

    简单场景 一个表单和一个文本框 未绑定 Text1 If lt gt Text1 Then MsgBox Not Empty End If 上面的代码有效 表达方式 lt gt Text1如果文本框包含字符 则计算结果为 True 无论文本

随机推荐

  • selectInput 选择显示标签中闪亮的额外空白

    我正在使用闪亮的 selectInput 并且在我的选择的下拉菜单中我想要在一些单词之间有多个空格 但仅包含空格不会显示 应用程序中最多有 1 个空格 例如 在下面的代码示例中 Cylinder 和 I 之间有多个空格 但是如果运行此命令
  • MVC 4 Razor - 创建动态 DropDownList

    我正在尝试创建一个具有两个 DropDownList 的视图 第二个 DropDownList 中的可用选项取决于用户在第一个 DropDownList 中选择的选项 我将此数据传递到 ViewBag 中的视图 如下所示 List
  • 根据满足哪个条件对行进行排序?

    我有一个非常简单的问题 是否可以根据满足哪个条件对检索到的行进行排序 例如 我有一个人员表 我想检索姓名以 I 开头 以 ster 结尾 或包含 lo 的所有人员 并根据满足这些条件的条件进行排序 首先匹配第一个条件的行 然后匹配第二个条件
  • 鼠标按下时更改背景图像

    我有一个小问题 我发誓应该有用 这似乎是一个愚蠢的问题 但它是 我想要一个我创建的 div 来充当按钮 当我点击它时它不想改变它的背景 给出按钮的效果 这是我的代码 div div
  • 如何找出 R 中加载的包版本?

    我正在研究如何使用我的大学集群 它安装了 2 个版本的 R 系统范围的 R 2 11 Debian 6 0 和 R 2 14 2 位于非标准位置 我正在尝试将 MPI 与雪一起使用 我尝试运行的代码如下 library snow libra
  • C 语言中最常见的命名约定是什么?

    C 语言中常用的命名约定是什么 我知道至少有两个 GNU linux K R 与 lower case functions 姓名 与 UpperCaseFoo 函数 我这里只讨论C 我们的大多数项目都是使用 C 语言的小型嵌入式系统 这是我
  • Watir::Exception::MissingWayOfFindingObjectException:无效属性::css

    我很确定 watir webdriver 有 css 选择器支持 但看起来它不再存在了 ruby v ruby 1 9 3p0 2011 10 30 revision 33570 x86 64 darwin11 2 0 gem v 1 8
  • Keen.io Dataviz 绘制图表但不断收到错误“未捕获的请求解析器不存在”

    在绘制折线图之前尝试进行一些自定义数据更改 Keen io Dataviz 绘制图表但不断收到错误 未捕获的请求解析器不存在 Keen Dataviz 只从 Keen query 获取数据吗 Data result value 317 ti
  • 使用 python 和 boto 在 s3 中公开一个文件

    我在下面有一个 Thins 链接 当我尝试访问它时 会出现一个 xml 文件 上面写着 访问被拒绝 我需要进入 aws 管理控制台并进行此操作part 0000文件公开 以便我可以访问它 您知道如何使用 boto 和 python 授予权限
  • 在云中托管公共(只读)Neo4j 实例

    我正在开展一个开放科学项目 以了解药物为何有效 我们创建了一个名为Hetionet https github com dhimmel hetionet有 47 031 个节点和 2 250 197 个关系 是使用 Neo4j https t
  • Jasmine 规范未找到 CoffeeScript 中定义的类

    我正在 Rails 3 1 后端构建一个backbone js 应用程序 我使用 CoffeeScript 编写主干类 并使用 Jasmine 通过 jasmine headless webkit 进行测试 给定以下 部分 树 app as
  • 无需 jQuery UI 即可进行 jQuery 排序

    我需要 可排序的拖放 功能 并且我正在使用 jQuery 我无法真正使用 jQuery UI 因为对于这个项目来说 这将是一种开销 我需要添加许多 KB 的 JS 和 CSS 才能使用一小部分功能 有没有您可以推荐的插件或者我可以遵循的简单
  • TNS:侦听器当前不知道连接描述符中请求的服务

    运行我的应用程序时 我收到 ORA 12514 TNS listener 目前不知道连接描述符中请求的服务 但我可以通过 Visual Studio 中的服务器资源管理器连接到数据库 应用程序在哪里 发布时 查找连接数据库所需的信息 我们的
  • 哪里说 0x 前缀使文字成为十六进制基数?

    我知道我可以写0x1230FF在Python中 它将是一个值为1192191的字面int 但是我在官方文档或PEP中找不到任何指定这是允许的并且0x确实表示十六进制基数 我能找到的最接近的是PEP 3127 整数文字支持和语法 https
  • AS3 USB 游戏控制器支持

    如何让 USB 控制器控制我的 AS3 游戏 我现在正在使用键盘 我考虑过映射按键 但我必须为此使用一个插件 我只是希望用户能够购买一个不需要任何驱动程序下载 配置的 简单控制器 他们应该能够插入 USB 控制器并通过浏览器中的 Flash
  • Apple 推送通知身份验证密钥(沙盒和生产)

    我最近在为给定 iOS 客户端创建证书时注意到一个新选项 该选项的标题是 Apple 推送通知身份验证密钥 沙盒和生产 获取身份验证密钥以生成服务器端令牌 您可以使用 这些令牌作为您通知的证书的替代品 要求 一个身份验证密钥可以用于多个应用
  • 从 PowerShell 调用 CreateProcess

    我正在尝试打电话创建进程 http msdn microsoft com en us library windows desktop ms682425 28v vs 85 29 aspx来自 PowerShell API 调用表明它已成功
  • 如何将 TextView 值转换为 Integer

    美好的一天 编程勇士们 请帮我解决这个简单的问题 我是 Android 新手 如何将 TextView 值转换为 Integer 请看我附加的代码 谢谢 public class appleTrivia extends AppCompatA
  • Angular 9 - 伊斯坦布尔测试覆盖率报告生成为空

    我收到一份空报告 它列出了文件 但没有填充百分比 知道是什么原因造成的吗 错误信息 Handlebars 访问已被拒绝解析属性 语句 因为它不是其父级的 自己的属性 我的 package json 文件 dependencies angul
  • PL/SQL 存储过程输出游标到 VBA ADODB.RecordSet?

    在这篇文章的序言中 我想说我对 Excel 2007 vba 宏相当陌生 我正在尝试调用一个以游标作为输出参数的 Oracle PL SQL 存储过程 程序规范如下所示 PROCEDURE get product out cur data