问题标签 [odp.net-managed]

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 投票
2 回答
428 浏览

c# - .NET DateTime <> Oracle Timestamp like search 的表达式树

我需要知道我是否能得到线索。我正在尝试构建一个表达式树,该表达式树通过 ODP.NET 托管驱动程序(当前版本)通过实体框架 6(LINQ to Entities)评估到适当的 Oracle 语句,以执行过滤。这非常适用于 string <> nvarchar2 数据类型。包含搜索的输出类似于:

现在我想为 DateTime <> Timestamp(6) 获得相同的结果,因为这行 sql 语句对 oracle 查询有效并返回所有包含“08”的日期:

由于我是表达式树的新手,我首先需要知道(在谷歌搜索并尝试过这个和那个之后),在我深入研究之前这是否可能。如果是这样,如何才能最好地做到这一点?由于没有为 DateTime 和 DateTime 定义包含方法?也许提供扩展方法?而且我不想直接对数据库执行查询。

任何提示都可以很好地“解开”给定的数据库数据类型……谢谢。

0 投票
1 回答
723 浏览

c# - 如何防止在读取 Oracle FLOAT(126) 小数点后多位到 ADO.NET DataTable 时溢出?

当数据库列包含 number like0.11212121212121356500008888888888874343468766时,它​​不能适合 DataRow 生成的 Decimal 类型列。这同样适用于 DataReader。使用 DataReader 我已经用包装器解决了这个问题:

但是我怎样才能对 DataSet、DbDataAdapter 做些什么呢?用 ROUND 或 TRUNC 重写所有 datadapter-Select 命令不仅是错误的,而且是毫无疑问的,因为已经有数百个地方可以更改它。

注意这也适用于 ODP.NET。那里的类​​型是 OracleDecimal 而不是 OracleNumber。我的包装器用于两个客户端。

0 投票
1 回答
464 浏览

c# - ODP.Net 托管驱动程序忽略事务回滚

我正在用 Oracle 的托管驱动程序替换我们旧的非托管 ODP 驱动程序,并且我发现我的事务正在提交,即使显式回滚或未提交也是如此。

在这种情况下,一旦代码停止运行,我的插入就会提交。

我错过了什么?

0 投票
1 回答
4030 浏览

c# - ODP.NET - 禁用自动提交

使用 ODP.NET 时是否有一种简单的方法可以禁用自动提交?我想使用 SET TRANSACTION 命令开始事务,而不是使用 Connection.BeginTransaction 和 TransactionScope。此外,我希望任何 DML 启动事务(如果尚未启动)但在发出 COMMIT 命令之前不提交更改。我知道其他 Oracle 提供程序(JDBC 或 Devart)支持这一点,但我想用 ODP.NET 实现相同的行为。

我还发现在 ODP.NET 的托管版本中可能存在私有字段,但它隐藏在难以通过 OracleConnection 实例访问的物理连接的实现中。在非托管版本中,此设置似乎也在 Oracle.DataAccess.dll 程序集之外。

0 投票
1 回答
649 浏览

c# - 通过 ODP.Net Managed Provider 调用 UTL_I18N.string_to_raw 会导致抛出有损字符集转换异常

我正在尝试将加密的 unicode 文本存储在 OracleRAW字段中。AL32UTF8在加密之前,为了提高效率,我将字符串转换为原始字节数组。(NLS_NCHAR_CHARACTERSETAL16UTF16)。

从UTL_I18N 包中抛出LOSSY_CHARACTERSET_CONVERSION( ORA-12713) 异常。

我故意设置NCharConversionException = true让它抛出异常,而不是让有损转换“希腊化”输出。

我究竟做错了什么?

为了方便起见,这里是一个使用 Dapper 的示例。没有调用 string_to_raw 的 NVarchar2 参数绑定可以正常工作。

客户端

Windows 7 Professional x64 SP1 .Net 4.6 Full Oracle.ManagedDataAccess.dll4.12.1.2400(最新)。

Oracle全球化设置:

我没有NLS_LANG在客户端上设置环境变量,因为上面应该涵盖。(无论如何,我都没有检查它是否对托管提供者有任何影响)。

服务器

NLS_DATABASE_PARAMETERS

V$版本

客户端错误堆栈:

0 投票
3 回答
19590 浏览

odp.net-managed - Oracle ODP.NET 错误

我有一个 VS 2012 Web 项目。我安装了 ODP.NET,因为我们是 Oracle Workshop。我继承了一个使用 Oracle.ManagedAccess.Data 和 EF 的项目。

在 VS 2012 中运行项目时,出现以下错误:

解决方案是禁用 web.config 中的以下行

这很好。该项目已编译,但在执行一个简单的命令(例如在必须读取数据库的地方取回密码)时,又出现了另一个错误:

现在我知道错误是由 ODP.NET 触发的,并且它存在于 GAC 中,因此会出现双重错误报告。

我应该注释掉另一行还是有办法短暂禁用 ODP.NET?我不想安装该客户端,因为我将它用于其他项目。

谢谢

0 投票
0 回答
237 浏览

vb.net - 为什么 OracleDataAdapter.Fill 不能与此自然连接 SQL 语句一起使用

我无法让某些包含自然连接的 SQL 语句与 OracleDataAdapter.Fill() 一起使用。我正在使用 Oracle.ManagedDataAccess 4.121.1.0。

为了说明这一点,请查看以下有效的 SQL 语句。所有这些都在 SQL 编辑器中正常工作。但是,当我使用 OracleDataAdaper.Fill 方法时,最后一个不能通过 ODP.NET 工作。我在使用带有这些语句的 OracleDataReader 时没有遇到任何问题。

与 OracleDataAdapter.Fill 一起使用

与 OracleDataAdapter.Fill 一起使用

不适用于 OracleDataAdapter.Fill

异常消息:

Oracle.ManagedDataAccess.Client.OracleException: ORA-00942: 表或视图不存在

执行数据库查找和获取的数据访问层函数

我对任何想法持开放态度,并将上传您需要的任何其他信息。

0 投票
0 回答
196 浏览

c# - 当我给它无效的 SQL 时,如何让 Oracle 返回错误?

我一直在使用Oracle ODP.NET,托管驱动程序从 C# 发出查询。

我写的很多查询都需要很长时间才能返回任何数据;就像它忽略了我的行限制条款:

或者

就像甲骨文忽略了我的10行限制,并开始返回所有内容 - 因为返回需要很长时间。最终我意识到并不是查询忙于返回大量数据;是查询SQL无效。

当您向 Oracle 发出无效 SQL 时,它不会因错误而失败。

  • select top 10 * from customers;
  • select 'Hello, world!';
  • select sysdate from duel;
  • select sysdate fro;
  • Ceilings make pie and markers drive the ocean with their feet

Oracle 将坐在那里等待命令超时到期。

我最终意识到该Oracle.ManagedDataAccess.Client.OracleCommand对象(奇怪)没有CommandTimeout;它默认为永远运行。一旦我将其更改为更合理的 30 秒,我开始看到错误消息:

ORA-12537: 网络会话: 文件结束

Oracle ODP.NET、托管驱动程序或连接字符串中是否有一个选项,或者OracleCommand如果我的 SQL 语句中有错误,则告诉服务器抛出错误?

奖金喋喋不休

Oracle 为 ADO.net 提供了两个数据库驱动程序

  • 一个是 ADO.net 托管包装器,围绕您必须已经安装的 100MB 本机数据库驱动程序 ( Oracle.DataAccess )
  • 另一个是独立的 3.8 MB 驱动程序,用纯托管代码编写,没有其他依赖项(Oracle.ManagedDataAccess

Microsoft 创建了一个 Oracle 驱动程序,该驱动程序包含在 .NET Framework 中。但是该驱动程序已被弃用,并且在 .NET 4.5 中不再起作用需要安装完整的 Oracle 客户端软件版本 8.1.7 或更高版本 ( System.Data.OracleClient )

0 投票
0 回答
573 浏览

c# - ODP.NET 可以将布尔参数类型传递给存储过程吗?

我将 ODP.NET 12.1.2400 和 EF6 与 Oracle 11 数据库一起使用。

我有一个具有 BOOLEAN 类型参数的 Oracle 存储过程。我已导入此存储过程并将函数导入添加到我的 EF 数据模型中。但是我得到一个运行时异常:

PLS-00306:调用“PROCEDURE_NAME”时参数的数量或类型错误

当我将存储过程参数类型更改为 NUMBER 并更新 EF 模型时,一切正常。

有没有办法使用 BOOLEAN 类型?或者至少在 .NET 代码中使用 bool 参数(无需为 EF 函数导入创建包装函数)?

0 投票
0 回答
94 浏览

c# - 系统 Oracle -> Oracle 托管

我换出了引用,但我收到一个错误,它不能将 System.Oracle 转换为 Oracle.ManagedDataAccess