【问题标题】:SQL Command not properly ended ExceptionSQL 命令未正确结束异常
【发布时间】:2017-03-16 18:24:38
【问题描述】:

相当基本的 sql 命令。只想从我正在循环的不同表中获取计数。但是,如果我更改 sqlCommand 并添加一个 ';'最后我得到异常,SQL 命令没有正确结束。

     sqlCommand = String.Format("SELECT COUNT(1) FROM SO.{0} where DR_ADDRESS_ID = {1};", table, drAddr);

我很好奇为什么这个分号会抛出这个异常,因为命令应该以';'结尾

 sqlCommand = String.Format("SELECT COUNT(1) FROM SO.{0} where DR_ADDRESS_ID = {1}", table, drAddr);
     try
     {      
        using(OracleCommand ocCommand = new OracleCommand(sqlCommand,CommandType.Text))
        {
           ocCommand.Connection = dbConnection;
           recordCounter = Convert.ToInt64(ocCommand.ExecuteScalar());
        }               
     }
     catch (Exception er)
     {
        MessageBox.Show(String.Format("Error in RecordCount for table {0}: Reference {1} for log. err = {2}",table, logFilePath,er.ToString()));
        recordCounter = -1;

        using (StreamWriter writer = new StreamWriter(logFilePath, true))
        {
           writer.WriteLine(String.Format("Table: {0}. Command {1}", table,sqlCommand.ToString()));
        }
     }

【问题讨论】:

  • 您使用的是哪种数据库产品?可能不是所有的 MySQL、Oracle 和 SQL Server。请编辑标签以仅保留相关的标签。
  • 根据代码和错误信息,我删除了不相关的标签。
  • @mathguy 抱歉,Oracle 数据库是数据库产品。
  • 无需道歉 - 请记住下次发帖时检查网站默认为您添加的标签 - 它们很少 100% 准确。干杯!
  • @Korey - 看看这个问题:stackoverflow.com/questions/10728377/… - 分隔符是连接/驱动程序的属性,而不是数据库本身。虽然 SQL*Plus 将分号视为查询的结尾,但 Oracle 本身并不需要它。

标签: sql oracle


【解决方案1】:

分号通常仅用作 sqlplus 等交互式工具的命令终止符。

【讨论】:

    猜你喜欢
    • 2012-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-21
    相关资源
    最近更新 更多