Java Oracle异常:SQL命令未正确结束

Java Oracle异常:SQL命令未正确结束,java,sql,oracle,Java,Sql,Oracle,我正在使用JSP和Servlet开发web应用程序(IDE:Eclipse,容器:Tomcat7.0,DB:Oracle10) 我想在一个查询中从两个表中获取数据 查询: query = "select * from PROTOCOL as a, ACTIONS as b where a.PROTOCOL_ID = b.PROTOCOL_ID"; SELECT select_list FROM table1 t_alias1 WHERE expr operator

我正在使用JSP和Servlet开发web应用程序(IDE:Eclipse,容器:Tomcat7.0,DB:Oracle10)

我想在一个查询中从两个表中获取数据

查询:

query = "select * from PROTOCOL as a, ACTIONS as b where a.PROTOCOL_ID = b.PROTOCOL_ID";
SELECT select_list 
    FROM table1 t_alias1 
    WHERE expr operator 
        (SELECT column_list 
            FROM table2 t_alias2 
            WHERE t_alias1.column 
               operator t_alias2.column); 
但在运行应用程序后,我得到以下异常:

java.sql.SQLException: ORA-00933: SQL command not properly ended

查询中有什么错误吗?

您遇到的问题是关键字
AS
。这用于
SELECT
部分中的列。它对于指定表格的中的
无效

你有

从协议中选择*作为a,从操作中选择*作为b

应该是

从协议a、操作b中选择*。

t\u别名

指定相关名称,该名称是表、视图和, 物化视图,或用于计算查询的子查询。这个别名是 如果选择列表引用任何对象类型属性或 对象类型方法。相关性名称最常用于 相关查询。对表、视图或物化的其他引用 整个查询中的视图必须引用此别名

示例:

query = "select * from PROTOCOL as a, ACTIONS as b where a.PROTOCOL_ID = b.PROTOCOL_ID";
SELECT select_list 
    FROM table1 t_alias1 
    WHERE expr operator 
        (SELECT column_list 
            FROM table2 t_alias2 
            WHERE t_alias1.column 
               operator t_alias2.column); 

错误的别名语法。请尝试以下操作:

query = "select * from PROTOCOL a,ACTIONS b where a.PROTOCOL_ID = b.PROTOCOL_ID";

任何需要的人都可以在此发表评论。。PostgreSQL似乎接受与FROM/JOIN相邻的名称

@gdoron,Yeap。这很常见。但在Oracle中,不允许使用as。@Bhushan协议和操作是否存在,以及查询它们的用户是否可以看到它们(此外,如果您不是以表所有者身份登录,请确保存在同义词,否则必须以所有者名称作为前缀)?@Vash,不确定你在哪里看到了关于alias或
as
grammer的任何信息。@gdoron,我已经添加了要回答的文档。你在那里找不到关于
As
的任何信息,因为它是不允许的。@Vash,那么你添加的文档到底添加了什么(?!)无论如何,我明天在工作中看到了它是允许的。我将检查
As
,我承认我从未使用过它……这是因为协议或操作表不存在,或者在不同的架构中,你没有任何补助金。首先检查表名是否正确,如果正确,请从“所有对象/dba对象”视图中查找详细信息。检查对象名称、对象类型和所有者。如果所有者是,则使用apps.PROTOCOL和apps.ACTIONS更改查询