首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Java调用Oracle函数时出错ORA-00900

从Java调用Oracle函数时出错ORA-00900
EN

Stack Overflow用户
提问于 2019-10-15 13:33:55
回答 1查看 556关注 0票数 2

在从代码中调用函数时,我得到了Oracle 00900错误,而它是从sqldeveloper调用的。下面是我试图调用Oracle函数的代码。

代码语言:javascript
复制
        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:无效SQL语句引起

EN

回答 1

Stack Overflow用户

发布于 2019-10-15 13:41:29

根据the JavaDoc

用于执行SQL存储过程的接口。JDBC提供了存储过程SQL转义语法,允许以标准方式对所有RDBMS调用存储过程。这个转义语法有一个表单,它包含一个结果参数,另一个没有。如果使用,则必须将结果参数注册为OUT参数。其他参数可用于输入、输出或两者兼用。参数按编号依次引用,第一个参数为1。 {?= call <procedure-name>[(<arg1>,<arg2>, ...)]} {call <procedure-name>[(<arg1>,<arg2>, ...)]}

看起来{?=之间应该没有空格,而您有空格。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58396018

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档