CREATE OR REPLACE PACKAGE pkg_test
AS
TYPE myrctype IS REF CURSOR;
PROCEDURE proc_findResult(u_cursor OUT myrctype, u_id NUMBER);
FUNCTION fun_findResult(u_id NUMBER) return myrctype;
END pkg_test;
----包主体的声明
CREATE OR REPLACE PACKAGE BODY pkg_test
AS
PROCEDURE proc_findResult(u_cursor OUT myrctype ,u_id NUMBER)
IS
sqlString VARCHAR2 (500);
BEGIN
IF u_id = 0 THEN
OPEN u_cursor FOR SELECT userId, userName, password, groupName FROM user_account ORDER BY userId;
ELSE
sqlString :='SELECT userId, userName, password, groupName FROM user_account where userId=:w_id';
OPEN u_cursor FOR sqlString USING u_id;
END IF;
END proc_findResult;
function fun_findResult(u_id NUMBER) RETURN myrctype
IS
u_cursor myrctype;
sqlString VARCHAR2 (500);
BEGIN
IF u_id = 0 THEN
OPEN u_cursor FOR SELECT userId, userName, password, groupName FROM user_account ORDER BY userId;
ELSE
sqlString :='SELECT userId, userName, password, groupName FROM user_account where userId=:w_id';
OPEN u_cursor FOR sqlString USING u_id;
END IF;
return u_cursor;
END fun_findResult;
END pkg_test;
/********************************************************************************
IUserAccountDao userAccountDao = new UserAccountDaoImpl();
// find all object by procedure or function operation
Map parameterMap = new HashMap();
parameterMap.put("u_id", 15);
List accountList =
userAccountDao.findAllUserAccountByProcOrFun(parameterMap);
if (accountList.size()>0 ) {
for (Object temp : accountList) {
if (temp != null) {
System.out.println(((UserAccount)temp).toString());
}
}
} else {
System.out.println("result is null");
}