java中呼叫Oracle儲存過程時,出現異常:java.sql.SQLException: ORA-00928: 缺失 SELECT 關鍵字(已解決)
阿新 • • 發佈:2018-12-10
在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