0
你好,現在我正在處理這個問題,我有一個Oracle存儲過程,這個按照給定的姓氏找到僱員。但是當我發現沒有行時,我想捕獲Java中的無數據發現異常。 以下是過程從Java中的Oracle過程中獲得例外
FUNCTION GETEMPLOYEE_LASTNAME(LASTNAME IN VARCHAR2) RETURN CUREMPLOYEE_LASTNAME
IS CUR_NAME CUREMPLOYEE_LASTNAME;
BEGIN
OPEN CUR_NAME FOR SELECT * FROM EMPLOYEE WHERE LAST_NAME = LASTNAME;
RETURN (CUR_NAME);
EXCEPTION when NO_DATA_FOUND
then
NULL;
END GETEMPLOYEE_LASTNAME;
這就是我如何使Java中的呼叫流程。
public List<String> getEmployeeList(String lastName)
{
List<String> listaEmp = new ArrayList<String>();
try {
OracleCallableStatement oraCallStmt = null;
OracleResultSet deptResultSet = null;
oraCallStmt = (OracleCallableStatement) conn.prepareCall("{? = call DEPTOSYEMPDISPO.GETEMPLOYEE_LASTNAME(?)}"
);
oraCallStmt.registerOutParameter(1, OracleTypes.CURSOR);
oraCallStmt.setString(2, lastName);
oraCallStmt.execute();
deptResultSet = (OracleResultSet) oraCallStmt.getCursor(1);//This is the cursor with the data.
while(deptResultSet.next())
{
System.out.println(deptResultSet.getString("LAST_NAME"));
String Resultado = deptResultSet.getInt("EMPLOYEE_ID") + " " +deptResultSet.getString("LAST_NAME")+ "\t\t";
listaEmp.add(Resultado);
}
} catch (SQLException e) {
//e.printStackTrace();
System.out.println(e.getMessage());
}
return listaEmp;
}
它的工作原理很好,當我發現數據,並在沒有數據沒有問題,但有一個方法來調用從Oracle例外,我的意思是如果沒有數據,就跳轉到該導管(例外){/ * NO DATA FOUND MESSAGE * /}並顯示關於此的消息。
「cathExeptions()」是什麼意思? – 2014-11-06 22:27:39
我的意思是,只是爲了cath(Exception){}塊。這很讓人困惑,我會編輯該部分。 – OscarLeif 2014-11-06 22:32:32
如果你只是不處理存儲過程中的'NO_DATA_FOUND',會發生什麼?我想這會導致數據庫驅動程序在Java代碼中在客戶端引發'SQLException'。 – 2014-11-06 22:35:47