簡體   English   中英

選擇Oracle Java-ORA-00905:未找到關鍵字

[英]Select the Oracle java - ORA-00905: not found keyword

我正在嘗試在銀行中進行連接測試並提取一些信息,請認真研究,但是我遇到了以下錯誤:

    Exception in thread "main" java.sql.SQLException: ORA-00905: 
not found keyword

        at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
        at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331)
        at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:288)
        at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:743)
        at oracle.jdbc.driver.T4CStatement.doOall8(T4CStatement.java:207)
        at oracle.jdbc.driver.T4CStatement.executeForDescribe(T4CStatement.java:790)
        at oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:1039)
        at oracle.jdbc.driver.T4CStatement.executeMaybeDescribe(T4CStatement.java:830)
        at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1132)
        at oracle.jdbc.driver.OracleStatement.executeQuery(OracleStatement.java:1272)
        at Principal.Principal.main(Principal.java:46)

當我使用簡單的select運行代碼時,例如select * from plan; 它完美地工作。

我該如何解決此錯誤代碼,並且有一種更簡單的方法可以在oracle數據庫中執行選擇,或者此代碼就足夠了?

我想運行查詢以顯示島上的所有列值1(ICCID)。

ORA-00905:薰衣草nãoencontrada

package Principal;
import java.sql.*;


public class Principal {

         public static void main(String[] args) throws Exception {

                   Connection conexao = ObterConexao();

                   Statement statement = conexao.createStatement();


                   String query = "SELECT a.rp_package_value AS ICCID, "
                           + "c.rrs_resource_value AS IMSI, "
                           + "  ( "
                                + "  CASE "
                                   + " WHEN (SUBSTR (c.rrs_resource_value, 6, 1) = SUBSTR (a.rp_package_value, 9, 1)) "
                                    + "AND (SUBSTR (c.rrs_resource_value, 6, 2) <> '00') -- valida se o HLR existe "
                                    + "THEN 'Valid' "
                                    + "ELSE 'Invalid' "
                                  + "END ) AS IMSI_CHECK , "
                                  + "rrs_resource_sts Status, rp_package_sts "
                                + "FROM mtaapp20.rm_packages a, "
                                  + "mtaapp20.rm_package_content b, "
                                  + "mtaapp20.rm_resource_stock c "
                                + "WHERE a.rp_package_value IN "
                                  + "(SELECT RRS_RESOURCE_VALUE "
                                  + "FROM mtaapp20.rm_resource_stock c "
                                  + "WHERE c.rrs_resource_tp_id = 6 "
                                  + "AND c.rrs_resource_pool = 30 "
                                  + "--AND a.rp_package_value like '89955053110002178148' "
                                  + "AND SUBSTR (RRS_RESOURCE_VALUE, 9, 2) like '%1%'  "
                                  + "AND c.rrs_resource_sts = 'ASSIGNED' "
                                  + ") "
                                + "AND a.rp_package_id = b.rpc_package_id "
                                + "AND c.rrs_resource_sts = a.rp_package_sts "
                                + "AND b.rpc_component_tp_id = 5 "
                                + "AND b.rpc_component_vl_id = c.rrs_id "
                                + "ORDER BY a.sys_creation_date DESC " ;





                   ResultSet resultSet = statement.executeQuery(query);


                   if (resultSet.next()) {

                            System.out.println(resultSet.getObject(2));

                   }

         }


         private static Connection ObterConexao() {

                   Connection conexao = null;


                   try {

                            Class.forName("oracle.jdbc.driver.OracleDriver");

                            conexao = DriverManager.getConnection(

                                               "jdbc:oracle:thin:@BRUX:1521:T00WM11", "user", "password");

                   } catch (ClassNotFoundException e) {

                            e.printStackTrace();

                   } catch (SQLException e) {

                            e.printStackTrace();

                   }


                   return conexao;

         }

}

您在這一行中有一條SQL注釋:

+ "AND (SUBSTR (c.rrs_resource_value, 6, 2) <> '00') -- valida se o HLR existe "

問題在於Java代碼不知道SQL代碼中的任何換行符,因此會忽略“-”之后的所有內容。 只需將此行更改為:

+ "AND (SUBSTR (c.rrs_resource_value, 6, 2) <> '00') "

正如Volodymyr Pasechnyk指出的那樣 ,問題出在SQL查詢中。

您可以從查詢中刪除注釋,也可以將注釋從--更改為將注釋的代碼包裝在/**/

所以改變:

+ "AND (SUBSTR (c.rrs_resource_value, 6, 2) <> '00') -- valida se o HLR existe "

+ "AND (SUBSTR (c.rrs_resource_value, 6, 2) <> '00') /* valida se o HLR existe */ "

並更改:

+ "--AND a.rp_package_value like '89955053110002178148' "

+ "/*AND a.rp_package_value like '89955053110002178148'*/ "

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM