c# - 使用 ODBC 命令进行选择时出现错误 "ORA-00933: SQL command not properly ended"

标签 c# .net oracle odbc data-access

我尝试在 .NET 中使用 ODBC 对 Oracle 数据库执行查询,但出现以下错误:

ORA-00933: SQL command not properly ended

但是,SQL语句肯定是正确的,我从Oracle SQL Developer中可以成功执行。查询本身如下所示:

SELECT * FROM TABLE(SCHEMA.PKG.SPNAME('PARAMS'));

另一个简单的查询工作正常:

SELECT COUNT(*) FROM SCHEMA.MYTABLE

它看起来像前者,它在查询中使用了一个包并导致某些东西被破坏。该错误表明它没有正确结束,但它有一个分号和正确的大括号,所以似乎发生了其他事情。

如果我删除尾随的分号,我会收到一个没有任何消息的错误。

我的 C# 代码是基本的,如下所示:

using (var connection = new OdbcConnection(connectionString))
{
    using (var command = connection.CreateCommand())
    {
        command.CommandText = commandText;

        connection.Open();
        var result = command.ExecuteScalar();
        connection.Close();

        Console.WriteLine(result);
    }
}

使用适用于 .NET 的 Oracle 库时,当我删除结尾的分号时它会起作用。如果我保留它,则会出现关于 SQL 命令未正确结束的相同错误。

看起来这个查询应该与 ODBC 一起工作。是否需要采取任何不同的方式才能使其正常工作,或者使用 Oracle Managed Data Provider 是唯一的方法吗?

最佳答案

根据我的经验,我注意到分号会中断查询的几个实例,例如 JasperSoft Studio 和 cx_Oracle Python 模块。我对 ODBC 与 OracleDataClient 知之甚少,但我想这是类似的情况。

关于c# - 使用 ODBC 命令进行选择时出现错误 "ORA-00933: SQL command not properly ended",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33269786/

相关文章:

c# - 如何使用异步一直到顶部

c# - 如何为闭源类型的所有属性注入(inject)自定义 UITypeEditor?

c# - 为什么 Int32.ToString() 发出调用指令而不是 callvirt?

c# - 派生类中的抽象方法覆盖,如何使私有(private)

c# - 定义应使用多个节点创建哪个节点索引

c# - 如何在Kestrel中直接使用PEM证书?

c# - 为什么 C#/CLR 不支持方法重写协方差/反方差?

sql - 试图理解 PLSQL 函数

sql - 在 Oracle 数据库中设置一个数字的特定位

java - 由 : java. lang.ClassNotFoundException : oracle. jdbc.OracleDriver 引起