2016-02-14 55 views
1

我試圖通過從java代碼調用過程從oracle數據庫讀取數據。 如果我從sqldeveloper運行程序,我可以看到程序給了我正確的輸出。但是當我嘗試使用java程序運行時,出現錯誤。使用過程從數據庫獲取數據

步驟:

CREATE OR REPLACE PACKAGE BODY VISIONEMPLOYEES AS 
    PROCEDURE Employees(
     p_id IN NUMBER, 
     p_ref_cursor OUT sys_refcursor) 
     AS 
     BEGIN 

     OPEN p_ref_cursor FOR 
     SELECT id, name, age FROM emp WHERE id = p_id; 

     EXCEPTION 
     WHEN OTHERS THEN 
      ROLLBACK; 
      RAISE; 
     END Employees; 
    END VISIONEMPLOYEES; 

Java代碼:

public static void callOracleStoredProcOUTParameter() 
    { 
    Connection conn = null; 
    Statement stmt = null; 
    CallableStatement cb = null; 
    String qry = "{VISIONEMPLOYEES.Employees(?,?)}"; 
    try { 

         conn = getDbConnection(); 
         cb = conn.prepareCall(qry); 
         cb.setInt(1, 1); 
         cb.registerOutParameter(2, OracleTypes.CURSOR); 
         cb.executeUpdate(); 
         String userName = cb.getString(2); 
         System.out.println("UserName is : " + userName); 

         } catch (Exception e) { 
          System.out.println(e); 
         } 
        } 

java.sql.SQLSyntaxErrorException:ORA-00900:無效的SQL語句

請告訴我,什麼是錯的書面以上碼。

+1

向我們展示你用來運行程序的代碼和代碼運行時,你所得到的錯誤。 – pczeus

回答