ORA-00933:SQL命令未正确结束

时间:2011-03-23 18:37:38

标签: c# sql oracle ora-00933

我尝试运行以下内容:

select *
from tax.tax_payer@reis tp
left outer join re_right@reis r on (tp.tin = r.tin or tp.tin = r.tin_a1 or tp.tin = r.tin_a2)
where (r.right_status = -1 or r.right_status is null)
--and r.right_id is not null
and tp.je_id = 12;

但继续

  

ORA-00933:SQL命令未正确结束。

如果我删除评论,它可以正常工作,但为什么?

2 个答案:

答案 0 :(得分:6)

上述代码在SQL * Plus中完美运行,在远程数据库连接中具有合适的定义。在您的实际执行环境中必定存在一些令人困惑的软件。

尝试使用“内嵌评论”表单,而不是“直到行结束评论”。在风格上,没有必要“;”在SQL语句的末尾,除非您的执行环境需要它们,或者您提交的是多行程序代码块(这不是)。

select *
  from tax.tax_payer@reis tp
       left outer join 
       re_right@reis r 
       on (   tp.tin = r.tin 
           or tp.tin = r.tin_a1 
           or tp.tin = r.tin_a2
          )
 where (   r.right_status = -1 
        or r.right_status is null
       )
    and tp.je_id = 12
 /* and r.right_id is not null */

此外,您可能希望将所有计算移动到远程数据库中,而不是通过网络提取数据并在更本地的数据库上执行连接。 (一些最新版本的Oracle将为您进行此优化。)

答案 1 :(得分:1)

在.NET中,您的查询不能包含尾部分号 - 它会搞砸查询。