1. 程式人生 > >java中呼叫Oracle儲存過程時,出現異常:java.sql.SQLException: ORA-00928: 缺失 SELECT 關鍵字(已解決)

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