假設目前有stored procedure - gpv(empId, password)
它的功能是傳入員工編號 (empId),傳回加密的密碼,並且,當執行成功時,會傳回0,失敗時會傳回錯誤代碼,傳回值的型別是整數,那麼程式該怎麼寫?
con = pool.getConnection(); // 由Connection Pool取得Connection
sql = "{ ? = call gpv(?, ?) }"; // sql statement,詳見說明A
cstmt = con.prepareCall(sql); // cstmt的型別是CallableStatement
cstmt.registerOutParameter(1, Types.INTEGER); // 說明B
cstmt.setString(2, emp_id); // 說明C
cstmt.registerOutParameter(3, Types.LONGVARCHAR);
cstmt.execute(); // 執行
ret = cstmt.getInteger(1);
pwd = cstmt.getString(3).trim(); //說明D
- 說明A:這是呼叫stored procedure的途述,如上是當有傳回值時,如果沒有傳回值要寫成{ call gpv(?, ?) }
- 說明B:如果參數將會傳回值的話,必須註冊。
- 說明C:當參數只傳入不傳出時,如此設定。
- 說明D:傳回值是第一個參數,傳回的參數是第三個參數。
沒有留言:
發佈留言