我尝试运行以下内容:
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命令未正确结束。
如果我删除评论,它可以正常工作,但为什么?
答案 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中,您的查询不能包含尾部分号 - 它会搞砸查询。