错误" ORA-00933:SQL命令未正确结束" on使用ODBC命令选择

时间:2015-10-21 21:42:11

标签: c# .net oracle odbc data-access

我尝试使用.NET中的ODBC对Oracle DB执行查询,并收到以下错误:

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);
    }
}

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

这个查询似乎可以与ODBC一起使用。有什么我需要以不同的方式让它工作,或者只使用Oracle管理数据提供程序吗?

2 个答案:

答案 0 :(得分:4)

根据我的经验,我注意到分号会破坏查询的几个实例,例如JasperSoft Studio和cx_Oracle Python模块。我对ODBC与OracleDataClient的了解甚少,但我认为这是类似的情况。

答案 1 :(得分:0)

我不会使用ODBC我实际上会使用OracleDataClient

来做这样的事情
var strSQL = "SELECT * FROM TABLE(SCHEMA.PKG.SPNAME('PARAMS'));";
using (OracleConnection connStr = new OracleConnection(connectionString))
{         
    using (OracleCommand cmd = new OracleCommand(strSQL, connStr))
    {
        cmd.CommandType = CommandType.Text;
        cmd.Connection.Open();
        cmd.ExecuteScalar(); //change the ExecuteScalar to fit the proper call
    }
}