【发布时间】:2015-04-30 06:20:25
【问题描述】:
在不同服务器上从 oracle 11g 更改为 oracle 10g R1 后,我在通信通道上收到错误 ORA-03111 Break。
我使用 DotNet 框架 4.5。
我有谷歌,但没有找到任何解决方案。
【问题讨论】:
标签: asp.net asp.net-mvc oracle entity-framework oracle10g
在不同服务器上从 oracle 11g 更改为 oracle 10g R1 后,我在通信通道上收到错误 ORA-03111 Break。
我使用 DotNet 框架 4.5。
我有谷歌,但没有找到任何解决方案。
【问题讨论】:
标签: asp.net asp.net-mvc oracle entity-framework oracle10g
在我的情况下(在 connection.Open() 上遇到异常),问题原来是 Oracle 服务器的版本太旧而无法使用托管提供程序。
根据:https://community.oracle.com/thread/2528641
ODP.NET, Managed Driver 支持连接Oracle DB server 10.2 或更高。它不支持 DB 10.1。
【讨论】:
在我的情况下,原因是 NVL 函数的输入返回了不止一行 - blabla 子查询如下:
PROCEDURE my_procedure(c_my_cursor OUT SYS_REFCURSOR) IS
p_my_cursor SYS_REFCURSOR;
BEGIN
OPEN p_my_cursor FOR
select nvl((select blabla), 0) my_column from my_table;
c_my_cursor := p_my_cursor;
END smiley_alle_jurenheder;
有趣的是,直接在 SQL Developer 中运行查询时,返回了正确的错误代码——“ORA-01427: single-row subquery returns more than one row”。
【讨论】:
我的问题是数据库中缺少列。它是在另一个环境中创建的。 很难找到真正的问题,因为这个错误并没有告诉我们什么。
在其他电脑调试时,真正的问题出现了。
希望这对某人有所帮助。
【讨论】:
由于这是搜索此错误时的第一个 Google 搜索结果,所以我想我也会添加我的解决方案。这个错误似乎是由于各种原因突然出现的,这使得排除故障非常困难。
我在构建一个在 MSSQL 和 Oracle 上运行的应用程序时遇到了它。启动时,它会创建一个简单的表。为了防止错误,任何现有的表都会被删除。这个多行、多命令的脚本在 MSSQL 上运行良好,但它的 Oracle 等效脚本一直返回此错误。
当我一个一个运行命令(drop、create table、create sequence)时,我终于解决了。此外,请注意分号 (;),因为将分号 (;) 留在 DDL 语句中也会导致 ORA-03111 错误。
回想起来,我知道在 Oracle 中一次运行多个命令很麻烦,但这个错误对于那些没有以 Oracle 的神秘方式启动的人来说毫无用处。
【讨论】:
我还有另一个原因。我正在查询 PeopleSoft,如果我在需要字符串的地方创建一个整数过滤器,我会得到这个。
这将失败并出现 ORA-03111:
SELECT Q.* FROM sysadm.PS_WMV_PRC_DISTRIB Q WHERE 1=1 AND PROJECT_ID = 123
虽然这很好:
SELECT Q.* FROM sysadm.PS_WMV_PRC_DISTRIB Q WHERE 1=1 AND PROJECT_ID = '123'
这一条消息有很多用途!我希望这对某人有所帮助。
【讨论】: