我无法在java本机查询中查询SYS.User_tables

时间:2018-03-18 09:38:57

标签: java sql oracle11g

我想获取当前架构的所有表名称(我有很多架构) 所以我使用user_tables,其中包含table_name列的系统视图。但是当我试图在java中查询它时,我得到了这个异常

java.sql.SQLSyntaxErrorException:ORA-00903:表名无效

StringBuilder sb = new StringBuilder("SELECT * from FROM SYS.USER_TABLES ");
 Query query = em.createNativeQuery(sb.toString());
List list = query.getResultList();

1 个答案:

答案 0 :(得分:0)

你有'来自'两次:

"SELECT * from FROM SYS.USER_TABLES "

这被解析为from是关键字,FROM是(无效)表名,SYS.USER_TABLES是表别名(也是无效的,但已经当时失败了。)

应该是:

"SELECT * FROM USER_TABLES"

您不需要评论中提到的SYS.前缀。如果您只想要表名,则只应选择该列,而不是通过*选择所有列。