java中调用Oracle储存过程时,出现异常:java.sql.SQLException: ORA-00928: 缺失 SELECT 关键字(已解决)

在java中调用Oracle储存过程时,出现异常:java.sql.SQLException: ORA-00928: 缺失 SELECT 关键字

//java代码
    @Test
    public void testProcedure(){
        Connection conn = null;
        CallableStatement call = null ;
        try {
            conn = JDBCUtils.getconnection();
            **call = conn.prepareCall("(call testprocedure(?,?,?))");**
            //in参数赋值
            call.setInt(1,7839);
            //out参数声明
            call.registerOutParameter(2,OracleTypes.VARCHAR);
            call.registerOutParameter(3, oracle.jdbc.OracleTypes.NUMBER);
            //执行
            call.execute();
            //取出
            String name = call.getString(2);
            float sal = call.getFloat(3);           
            System.out.println("ename="+name+" sal="+sal);          
        } catch (SQLException e) {
            e.printStackTrace();
        }finally{
            JDBCUtils.release(conn, call, null);
        }
    }

错误出现在call.execute()。
错误原因为:call = conn.prepareCall(“(call testprocedure(?,?,?))”);语法写错

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

更改为
conn.prepareCall(“{call testprocedure(?,?,?)}“)
或者去掉括号
conn.prepareCall(“call testprocedure(?,?,?)”)

执行成功

ename=KING sal=7600.0
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
这个错误信息 "java.sql.SQLException: ORA-01017: invalid username/password; logon denied" 是由于无效的用户名或密码所引起的。 主要的问题是用户名和密码的组合是无效的,但除了密码不正确之外,还有其他可能导致ORA-01017错误的用户ID问题。 要解决这个问题,您可以执行以下检查步骤: 1. 使用管理员权限登录到Oracle数据库。 2. 运行以下命令来检查数据库的用户名: select username from dba_users; 这将列出所有存在的用户名。 3. 确保您输入的用户名和密码与数据库的用户名和密码匹配。 4. 如果您仍然遇到问题,请尝试重置密码或联系数据库管理员以获取进一步的支持。 总结来说,"ORA-01017: invalid username/password; logon denied" 错误是由于无效的用户名或密码所引起的。您可以通过检查用户名和密码的正确性以及与数据库存在的用户名进行匹配来解决这个问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [JDBC连接ORACLE无法登陆java.sql.SQLException: ORA-01017: invalid username/password; logon denied...](https://blog.csdn.net/aoningxun2220/article/details/101627502)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值