当前位置: 首页 > 面试题库 >

java.sql.SQLException:ORA-00904

罗渝
2023-03-14
问题内容

我在异常以下得到这个-

java.sql.SQLException: ORA-00904: : invalid identifier
ORA-06512: at line 1

以下是我要执行的查询-

public static final String DATABASE_TABLE = "LnPData";

public static final String CREATE_SQL = "DECLARE " +
"t_count INTEGER; " +
"v_sql VARCHAR2(1000) := 'create table " +DATABASE_TABLE + "(" +
"(ID number(10,0), " +
"CGUID VARCHAR(255), " + 
"PGUID VARCHAR(255), " + 
"SGUID VARCHAR(255), " + 
"USERID VARCHAR(255), " +
"ULOC VARCHAR(255), " +
"SLOC VARCHAR(255), " +
"PLOC VARCHAR(255), " +
"ALOC VARCHAR(255), " +
"SITEID VARCHAR(255), " +
"PRIMARY KEY ( ID ))'; " +
"BEGIN " +
"SELECT COUNT(*) " +
"INTO t_count " +
"FROM user_tables " +
"WHERE table_name = '" +DATABASE_TABLE + "'; " +

"IF t_count = 0 THEN " +
"EXECUTE IMMEDIATE v_sql; " +
"END IF; " +
"END; ";

在控制台上,它被打印为-

DECLARE t_count INTEGER; v_sql VARCHAR2(1000) := 'create table LnPData((ID number(10,0), CGUID VARCHAR(255), PGUID VARCHAR(255), SGUID VARCHAR(255), USERID VARCHAR(255), ULOC VARCHAR(255), SLOC VARCHAR(255), PLOC VARCHAR(255), ALOC VARCHAR(255), SITEID VARCHAR(255), PRIMARY KEY ( ID ))'; BEGIN SELECT COUNT(*) INTO t_count FROM user_tables WHERE table_name = 'LnPData'; IF t_count = 0 THEN EXECUTE IMMEDIATE v_sql; END IF; END;

问题答案:

更改

"v_sql VARCHAR2(1000) := 'create table " +DATABASE_TABLE + "(" +
"(ID number(10,0), " +

进入

"v_sql VARCHAR2(1000) := 'create table " +DATABASE_TABLE +
"(ID number(10,0), " +

它正在工作。您只是有一个错误的括号。



 类似资料:
  • 问题内容: 下面我正在创建表。 当我尝试更新数据库表时,这是下面的UPSERT_SQL查询,我总是在 获取java.sql.SQLException:ORA-00936:缺少表达式 。我检查了我的SQL,找不到找不到表达式的地方。下面的SQL有问题吗? 从下面开始,我执行该UPSERT_SQL语句。 问题答案: 是的,SQL有点问题,这是您在 FROM dual 之前写了一个逗号。这导致Oracl

  • 问题内容: 我正在使用Oracle 11g数据库。当我尝试从db访问数据时,它显示错误java.sql.SQLException:ORA-03115:不支持的网络数据类型或表示形式。我不明白这个错误的意思.. 我的代码是: 任何人都可以帮助我解决这个问题。 问题答案: 代替: 您应该执行: 否则,您将不 准备 您的语句并丢失所有参数,因为您为其分配了新的SQL语句(即使它是相同的)。

  • 问题内容: 我正在使用java / hibernate / Oracle。我有一个超过3000个条目的列表。如果我通过整个列表,我将获得以下例外。 引起原因:java.sql.SQLException:ORA-01795:列表中的最大表达式数为1000 为了解决此问题,我将列表分为多个子列表,每个子列表将有1000个条目。对于每千个条目,我都会触发一个查询。它工作正常。 请澄清一下,有没有更好的解

  • 问题内容: 当我尝试向数据库中插入一些行时出现错误。所以这是代码 并且数据库上的所有内容均为varchar类型,请仔细检查各列(它们都是相同的名称),将列名中的引号引起来(相同的结果)不会成功。要添加它,错误消息不是很有帮助。 任何建议,将不胜感激。 问题答案: 我可以发现两个问题: 不需要在列名周围使用单引号。但是您可以将其用双引号引起来。如果对列名或表名使用保留关键字,则很有必要。在这里。 您

  • 我正在尝试更改WebSphere中指向其他环境的数据源。我可以使用toad或SQLDeveloper连接它。然而,当我试图测试来自websphere的连接时,它给出了以下错误。“java.SQL.sqlexception:ORA-28040:没有匹配的身份验证协议DSRA0010E:SQL状态=99999,错误代码=28,040。有关详细信息,请查看JVM日志。” 我试着重新启动服务器,但没有帮助

  • 最近三天以来,我遇到的问题只是简单的连接Android-Oracle12c数据库。 最近我上传了Android-Oracle-Connection,但它的11G版本。我使用过ojdbc14.jar 我也试过这个答案,但得到的错误是: 我没有找到任何教程或文档来连接12C。有人能帮忙吗?