问题标签 [ref-cursor]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
208 浏览

plsql - PLSQL 从二进制文件(这里是 xml)中读取特定的标签值,然后存储在光标中并显示它们

我正在尝试从 BLOB 文件中读取和打印特定标签值之一。在我的例子中,BLOB 数据存储在数据库中,二进制文件中的内容是 XML 但二进制类型。

我只能获得其中一个重复标签的第一个值。DATA_VALUE 是列名。

结果:- 12268646

如何列出标签的所有值而不重复并列出它们,以便我可以将它们用作其他 SQL 查询的输入?

我尝试通过将 BLOB 内容获取到 Cursor 来使用迭代 FOR 循环,但我只能获得第一次出现的标记。

随着每个此类文件的行数越来越多,是否有可能递归读取和显示所需信息而没有重复值?

这是存储在表的 DATA_VALUE 列中的 BLOB 数据:

0 投票
4 回答
5369 浏览

oracle - Oracle 存储过程 java.sql.SQLException:无效的列类型:2012 (REF_CURSOR)

Oracle 11g、Java 8、ojdbc8/ojdbc7

带有 OUT REF_CURSOR 的存储过程,例如,

从 sqlplus,它工作正常。

JDBC调用过程:

错误:

类型 2012 是 Types.REF_CURSOR。

使用 oracle 11g 尝试了 ojdbc7 和 ojdbc8,同样的错误。
Oracle 11g 支持 REFCURSOR。java 8 定义了 Types.REF_CURSOR。我应该为 11g 使用哪个 oracle jdbc 驱动程序?

0 投票
0 回答
1784 浏览

postgresql - 在 Postgresql 中的函数内使用“WITH HOLD”声明游标

我正在使用 postgresql 10.3。以下函数返回绑定到查询的游标

我需要将返回的光标设为“WITH HOLD”。我做了如下。

但我收到以下错误。

为什么我们不能在这里的函数内部使用 WITH HOLD?

0 投票
2 回答
5534 浏览

postgresql - 是否允许将 RefCursor 作为 Postgresql 函数的 OUT 参数?

我知道以下是可能的。即我可以在Postgresql 中有一个引用游标作为返回值。

但是我们可以在 postgresql 函数中将 ref 游标作为 OUT 参数吗?

供您参考,遵循我正在寻找的 Oracle 等效项。

0 投票
3 回答
1158 浏览

oracle - 如何在程序中找到 Ref Cursor 执行时间?

我使用 Ref Cursor 作为 PLSQL 过程的输出参数。我需要在日志表中维护 proc 的确切开始和结束时间。

下面的虚拟代码:

Ref Cursor 的选择查询有时需要 2-3 分钟才能执行,但在日志表中,我看到 STR_TIME 和 END_TIME 之间的差异只有几秒钟。

如何捕获过程所花费的总时间,包括查询执行时间?

0 投票
2 回答
344 浏览

oracle - 架构级别的 Oracle 参考游标/普通游标

我想知道我们是否可以在架构级别将acursor或 a声明为存储对象。ref cursor我尝试使用以下语句ref cursor

但我得到了错误。一个小的工作示例就可以了,如果我们不能,那么简要说明其背后的原因将是一个很大的帮助。

0 投票
1 回答
1100 浏览

sql - 将 refcursor 获取到临时表中

我需要将 refcursor 提取到临时表中。每个 refcursor 列应该匹配适当的表列 + 一个键(枚举)列应该在临时表中。例如 refcursor 返回以下数据:

以及应该存储在表中的数据:

这个 refcursor 在其他函数中打开。所以我不知道结果集中应该有哪些列。我如何实现 FETCH ALL curs INTO temp_table 之类的东西?

我写了下面的函数,但它抛出了 (V_CURS_Rec) 的错误。*

0 投票
1 回答
675 浏览

oracle - 具有自定义类型的 Oracle 参考游标

我正在尝试编写一个具有引用游标和自定义类型的存储过程。我想将结果提取到自定义类型中,然后循环打印结果。到目前为止,我通过对如何做一些研究来尝试这个。但是我遇到了一些错误。任何人都可以请指导我正确的方法来做到这一点。

我面临的错误如下:

新错误是:

0 投票
3 回答
223 浏览

oracle - PL/SQL 可重用的动态 sql 程序,用于相同类型的任务但不同的表和列

谢谢大家的回复。我有点解决了我的问题。

我曾经尝试使用“where current of”在动态 SQL 中使用 ref 游标更新数据,但我现在知道这行不通。

然后我尝试使用 %rowtype 将 'id' 和 'clob' 存储在一个变量中以供将来更新,但结果是弱引用游标也不能使用该类型绑定。

之后,我尝试使用记录作为参考游标的返回,这也不适用于弱游标。

最后,我创建了另一个游标来分别检索“id”以及同时检索“clob”的游标,然后使用该id更新表。


我现在正在处理 Oracle 数据清理任务,并且有如下要求:

有 38 个表(将来可能更多),每个表都有一个或多个列,类型为 Clob。我需要在这些列中找到不同的关键字,并根据逻辑返回列的二进制标签并将其存储在新列中。

例如,有一个表“myTable1”,它有 2 个 Clob 列“clob1”和“clob2”。我想从这些列中找到关键字“sky”,并将“0”(如果未找到)或“1”(如果找到)存储在两个新列“clob1Sky”、“clob2Sky”中。

我知道我是否可以以静态方式编写它,这将提供更高的效率,但我每次都必须为那些非常相似的任务修改它。我想在这方面节省一些时间,所以我试图以可重用的方式编写它,而不是绑定到某个表。

但是我在编写程序时遇到了一些问题。我的程序如下:

大多数 DML 和 DDL 都是以动态 sql 方式编写的。

问题是当我写 (5) 部分时,我注意到'Where current of' 子句不能在引用游标或动态 sql 语句中使用。所以我必须改变计划。

我尝试使用记录(rowid,label)来存储结果并稍后更改表。(该表仅供我组中的两个人使用,因此不会出现锁定和数据更改的问题)。但我发现因为我正在尝试使用动态 sql,所以实际上我必须定义 ref 游标,返回某些 %rowtype 和基本上所有其他变量, %type 在动态 sql 语句中。这让我觉得我的方法有问题。

我的问题是:

  1. 如果有办法在动态 sql 中定义 %type?将类型绑定到动态 SQL 中的变量?

  2. 谁能给我一个提示如何在动态 SQL 中编写 (5) 部分?

  3. 我不应该这样设计我的程序吗?

  4. 这不是如何使用动态SQL或PLSQL的方式吗?

我对 PL/SQL 很陌生。非常感谢。

0 投票
2 回答
4893 浏览

oracle - 如何在 PL/SQL 块中打印游标?

我似乎无法打印光标,我做错了什么?

我收到以下错误:

大多数代码是直接从 SQL 开发人员运行函数中获取的。

这是包函数:

此外,我无法使用select语句打印结果,因为该函数也具有 DML。