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

Oracle无效标识符不理解字符串

何灿
2023-03-14
问题内容

我的查询无法正常工作。这是command变量。

当它执行时,应该检索具有BSc作为其学位的元组。我已经在oracle中直接测试过了,查询返回了这些。它与command声明相同。

当我打印输出时command,该行看起来与在oracle中工作的命令完全相同。

SELECT distinct fname, lname, student_id FROM student where degree='BA';

但是,它应该打印到屏幕上。该表已被加载到oracle中。

我一直在为这个问题绞尽脑汁,但似乎找不到解决方法!

我不断得到的错误是: ORA-00911: invalid character

我要做的是将degree扫描器的结果存储在字符串中。因此,将其串联在command变量中应该不会造成问题-
查询看起来与在oracle中起作用的查询相同。

可能是因为它想要一个char而不是一个字符串吗?如果是这样,那么我将如何使其成为字符型“ BSc”呢?串联字符听起来很愚蠢。

相关代码如下:

 private String getDegree() {
  Scanner scan = new Scanner(System.in);
  System.out.println("Please enter degree code (either BA or BSc)");
  return scan.next();

}

//get the degree name
        String degree = getDegree();


        //get statement and execute appropriate select
        Statement stmt = con.createStatement();
        String command = "SELECT distinct fname, lname, student_id FROM student"+
           " where degree='"+ degree + "';";
        System.out.println(command);
        ResultSet result = stmt.executeQuery(command);

        //determine number of columns
        ResultSetMetaData metadata = result.getMetaData();
        int columns = metadata.getColumnCount();

        //print heading
        System.out.println("\nFNAME        LNAME         STUD_ID");
        System.out.println("====================================");

        //loop through result and print columns

        while (result.next()){
           for (int i=1; i <=columns; i++){
              System.out.print(result.getString(i)+spaces(15-result.getString(i).length()));
           }
           System.out.println();
        }

`


问题答案:

在JDBC中,您的SQL语句不应以分号终止。

更改

String command = "SELECT distinct fname, lname, student_id FROM student"+
       " where degree='"+ degree + "';";

String command = "SELECT distinct fname, lname, student_id FROM student"+
       " where degree='"+ degree + "'";


 类似资料:
  • 问题内容: 我的查询无法正常工作。这是变量。 当它执行时,应该检索具有BSc作为其学位的元组。我已经在oracle中直接测试过了,查询返回了这些。它与声明相同。 当我打印输出时,该行看起来与在oracle中工作的命令完全相同。 但是,它应该打印到屏幕上。该表已被加载到oracle中。 我一直在为这个问题绞尽脑汁,但似乎找不到解决方法! 我不断得到的错误是: 我要做的是将扫描器的结果存储在字符串中。

  • 有人能帮我找出为什么这段代码返回一个SQLOracle ORA-00904:无效的索引符错误吗?查询在没有Country='阿根廷'的情况下有效,但我需要按此值向下过滤。有人能给我指出正确的方向吗?

  • 我正在进行SQL查询,但遇到了一个问题。 这就是查询。 这就是结果。 我不知道为什么“T1”在子查询中无效。

  • 问题内容: 我尝试使用Oracle数据库编写以下内部联接查询: 这给出了以下错误: 一个表的DDL为: 问题答案: 您的问题是那些有害的双引号。 Oracle SQL允许我们忽略数据库对象名称的大小写,只要我们创建它们时都使用大写的名称,或者不使用双引号即可。如果我们在脚本中使用大小写混合或小写并且将标识符括在双引号中,则当我们引用对象或其属性时,我们都被要求使用双引号和精确的大小写: tl; d

  • ORA-00904:“strdef”:无效标识符 > Oracle数据库版本为: Oracle Database 11g Enterprise Edition版本11.2.0.4.0-64位Production PL/SQL版本11.2.0.4.0-Production“Core 11.2.0.4.0 Production”TNS for Linux:版本11.2.0.4.0-Production

  • 我得到这个错误,而在Oracle数据库中执行查询: ORA-00904:“STRDEF”:无效标识符 > Oracle Database 11g Enterprise Edition 11.2.0.4.0版-64位生产PL/SQL 11.2.0.4.0版-生产“CORE 11.2.0.4.0生产”Linux版TNS:11.2.0.4.0版-生产NLSRTL 11.2.0.4.0版-生产 STRDE