问题标签 [oracle-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 回答
1083 浏览

sql-server - 在 SSRS 中选择 Oracle 存储过程会导致 Visual Studio 2005 IDE 崩溃

问题条件

我有一个非常简单的 Oracle (11g) 存储过程,声明如下:

这编译正确。光标包含 col1、col2 和 col3。

在 SSRS 中,我有一个使用 Oracle OLEDB Provider for Oracle 11g 的共享数据源:

(加上用户凭据)。

什么工作正常:

  • 存储过程在 PL/SQL Developer 中正确执行
  • SSRS 中的“测试连接”工作正常
  • 命令类型为“文本”的查询字符串SELECT * FROM MyTable;会在 SSRS 报告中生成正确的字段。
  • .NET Oracle 提供程序而不是 Oracle OLE DB 提供程序

什么失败:

如果我将命令类型更改为“存储过程”并输入“pr_myproc”,当我单击“确定”时,Visual Studio 2005(服务包 2)只会挂起/崩溃。

有没有人有这方面的知识/经验?

非常感激任何的帮助。谢谢。

更多信息

我已将提供程序从 Oracle OLE DB 提供程序修改为 .NET Oracle 提供程序,并且神奇地工作。

这似乎表明 Oracle 提供程序存在问题。

还有什么想法吗?

0 投票
1 回答
1659 浏览

oracle - 如何从 Oracle 函数中锁定并返回多行?

我一直在尝试解决 Oracle 如何处理ROWNUM以及SELECT ... FOR UPDATE SKIP LOCKED尝试返回几行未锁定的问题。我尝试了以下一些解决方案:Force Oracle to return TOP N rows with SKIP LOCKED,以及其他几个看起来与该问题非常相似的示例。我知道 Oracle AQ 可能是最好的解决方案,但我们对数据库几乎没有控制权,而且我遇到了相当大的反对意见。

我遇到的问题是尝试使用 JDBC 将结果返回给 Java。我已经尝试过setFetchSize(20),但我遇到了只将前 20 行分发给客户端的问题。我通常会看到一个处理代理获得所有 20 行或几个处理器获得一些行,所有这些行加起来为 20。这非常类似于ROWNUMSELECT ... FOR UPDATE SKIP LOCKED.

我尝试过的最有希望的解决方案是以下功能:

但是,当我尝试像这样调用它时:

我收到一个ORA-14551: cannot perform a DML operation inside a query错误,我现在明白这是事务的问题。移除锁会导致函数返回行。

如何在保留锁的同时将此函数中的多行放入 JDBC?

0 投票
3 回答
16996 浏览

stored-procedures - 如何从 Java 中的 oracle SP 返回 sys_refcursor?

我在 oracle 中有一个存储过程(SP):

在我的 java 类中,我有以下代码行来调用 SP:

这就是我在网上找到的调用 SP 并返回游标的方法。当我尝试编译时,出现以下两个错误:

error: cannot find symbol stmt.registerOutParameter(2, OracleTypes.CURSOR);并且error: cannot find symbol rs = stmt.getCursor(2);它说它找不到 OracleTypes 和 getCursor。

我尝试导入import oracle.jdbc.driver.*;orimport oracle.jdbc.*;并分别得到错误error: package oracle.jdbc does not exist import oracle.jdbc.driver.*;error: package oracle.jdbc does not exist import oracle.jdbc.*;

我在正确的文件夹中也有 ojdbc14.jar 文件,并且可以使用查询字符串进行连接。只是在尝试使用 SP 时给我带来了麻烦。

SP 是我们在当前 CF 网站上使用的一个,所以我想按原样重复使用它。有人可以解释一下为什么这可能行不通吗?或者是否有其他代码可用于从 Oracle SP 返回游标?谢谢。

0 投票
1 回答
2062 浏览

oracle - 用于插入数据的 Oracle 批量收集脚本

我有以下脚本

但它抱怨它不承认l_cursor(INDX).col1。我在这里做错了什么?

0 投票
1 回答
16349 浏览

oracle - Oracle - 此范围内不存在名称为 X 的函数

该函数显然在那里,因为我可以使用 SQL Developer 导航到它并且它编译得很好,但是当我尝试使用带有或不带有“调用”的函数时,它会抛出:

错误(36,24):PLS-00222:此范围内不存在名称为“x”的函数

这是函数的样子:

这就是我所说的:

其中 messageT 和 somevalue 都被声明为 varchar2 类型。

函数内部是否不允许使用游标或类似的东西?

0 投票
0 回答
185 浏览

oracle - 自适应游标共享 (Oracle)

如果我将 CURSOR_SHARING 参数设置为 FORCE,然后发出类似的语句

,那么自适应游标共享只有在 REGION 列中有直方图时才会发生,或者无论该列上是否有直方图都会发生?

在这种情况下,cursor_sharing FORCE、自适应游标共享和直方图之间是否存在关系?

谢谢!

0 投票
1 回答
576 浏览

oracle11g - SQL 游标何时加载数据?

我有以下脚本通过读取远程源表来更新本地表。脚本运行良好,没有任何错误。这篇文章是为了正确澄清光标的工作原理。

我从远程源表中读取数据Source_Product并最初插入到临时表中VW_PRODUCT。之后我插入或更新我的PRODUCT表。

我的问题是。

1)什么时候product_cursor加载数据?是当我们尝试在 for 循环中读取光标时吗?或者何时声明游标它加载数据?

2) 该脚本每天运行。如果一product_cursor宣布就运行,则VW_PRODUCT有前一天的数据。因为今天的数据仍然没有插入到VW_PRODUCT表中(在游标声明之后可以使用插入查询)。所以product_cursor之后不会有任何记录minus。因为ysterday_data minus ysterday_data是零。那么它如何PRODUCT根据以下脚本更新或插入最新数据呢?

0 投票
1 回答
1697 浏览

c# - 即使在正确的参数之后,调用中的参数数量或类型也错误

我花了很多时间调查这个问题,即使我在这个网站上发现很少有类似的帖子但没有用。

如果有人可以帮助我。

以下是例外情况:

C#代码:

Oracle 存储过程:

0 投票
1 回答
1045 浏览

stored-procedures - %rowtype 游标中的动态查询

我需要创建一个记录类型来包含上述查询的结果集

这样我就可以在循环执行语句中使用 t1 C_BRNGB_EXTRACT%ROWTYPE(加上 l_BRNGB_EXTRACT 中的 t2.col4%TYPE 的另一列)

对于上述存储过程,我收到以下错误

PLS-00320:此表达式类型的声明不完整或格式错误 PL/SQL:忽略项目 PLS-00597:INTO 列表中的表达式“L_BRNGB_EXTRACT”类型错误 PL/SQL:忽略 SQL 语句 PLS-00487:无效引用变量“C_BRNGB_EXTRACT%ROWTYPE”

请帮我解决这个问题。

0 投票
0 回答
246 浏览

oracle - oracle打开游标问题

我的 java 应用程序有问题。尽管我正在关闭所有连接语句和游标,但我收到 ORA-01000 最大游标打开错误,例如:

当我查询最大限制并打开游标时,我得到限制 400,打开游标 300。

在其他情况下,当我查询与我相关的打开游标时,我只得到 11 个打开游标,因此我不明白我怎么会导致这种情况。

所以这里的问题是我怎么能得到这个问题,上面的查询有问题吗?