簡體   English   中英

從 Java 調用 Oracle Function 時出現錯誤 ORA-00900

[英]Error ORA-00900 while calling a Oracle Function from Java

我在嘗試從代碼中調用 Oracle function 時收到ORA-00900錯誤,而它在 sqldeveloper 中有效。 我試圖從中調用 Oracle function 的代碼如下。

        passwordCriteria = session.doReturningWork(connection -> {
            try (CallableStatement function = connection
                    .prepareCall("{ ? = call test$ui_mob.password_change (?,?,?,?) }")) {
                function.setEscapeProcessing(false);
                function.registerOutParameter("p_response", Types.VARCHAR);
                function.setString("p_username", "TEST_USER");
                function.setString("p_companycode", "BSH");
                function.setString("p_deviceid", "123456798");
                function.setString("p_language", "en");
                function.executeQuery();
                return function.getString(1);
            }
        });
    }

堆棧跟蹤是

引起:java.sql.SQLSyntaxErrorException: ORA-00900: invalid SQL 語句

根據JavaDoc

該接口用於執行SQL存儲過程。 JDBC API 提供了存儲過程 SQL 轉義語法,允許以標准方式為所有 RDBMS 調用存儲過程。 這種轉義語法有一種形式包含結果參數,另一種形式不包含。 如果使用,結果參數必須注冊為 OUT 參數。 其他參數可用於輸入,output 或兩者兼而有之。 參數按編號順序引用,第一個參數為 1。

{?= call <procedure-name>[(<arg1>,<arg2>, ...)]}

{call <procedure-name>[(<arg1>,<arg2>, ...)]}

看起來{?=之間不應該有空格,而你有空格。

暫無
暫無

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

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