Thanks Makarand,
My procedure is
CREATE OR REPLACE PACKAGE BODY PK_ACD_REPORTS
AS
PROCEDURE GENERATE_TOURLOG (
p_CALLDATEIN VARCHAR2,
p_TOURNUMBERINNUMBER,
p_CALLDATAOUTrep_cursor,
p_USERDATAOUT rep_cursor,
p_COMMENTDATAOUT rep_cursor
) AS
call_date DATE;
prev_call_date DATE;
tourFromDateTime VARCHAR2(17); -- Format is MM/DD/YYYY HH24:MI:SS
tourToDateTime VARCHAR2(17);
BEGIN
call_date := TO_DATE(p_CALLDATE,'mm/dd/yyyy');
prev_call_date := call_date - 1;
IF p_TOURNUMBER = 1 THEN
tourFromDateTime := TO_CHAR(prev_call_date,'MM/DD/YYYY') ||
' ' || '22:00:00';
tourToDateTime := TO_CHAR(call_date,'MM/DD/YYYY') ||
' ' || '05:59:59';
ELSIF p_TOURNUMBER = 2 THEN
tourFromDateTime := TO_CHAR(call_date,'MM/DD/YYYY') ||
' ' || '06:00:00';
tourToDateTime := TO_CHAR(call_date,'MM/DD/YYYY') ||
' ' || '13:59:59';
ELSIF p_TOURNUMBER = 3 THEN
tourFromDateTime := TO_CHAR(prev_call_date,'MM/DD/YYYY') ||
' ' || '14:00:00';
tourToDateTime := TO_CHAR(call_date,'MM/DD/YYYY') ||
' ' || '21:59:59';
END IF;
OPEN p_CALLDATA for
select CALL_ID,
TO_CHAR(CALL_DATETIME,'HH24:MI'),
CAD_NUM,
UNIT_ID,
METHOD,
LL_NUM,
BIOTEL_CH_NUM,
REASON,
CAD_FINAL_TYPE
FROM CTS_CALL_HIST
WHERE TO_CHAR(CALL_DATETIME,'MM/DD/YYYY HH24:MI:SS')
BETWEEN tourFromDateTime AND tourToDateTime
AND STATUS_ID='COMP'
ORDER BY TO_CHAR(CALL_DATETIME,'HH24:MI');
OPEN p_USERDATA for
select distinct call.USER_ID,
pk_cts.SF_USERNAME(usr.USER_LNAME,usr.USER_FNAME,usr.USER_MNAME),
rol.ROLE_NAME
from cts_call_hist call, cts_user usr, cts_sec_role rol
where TO_CHAR(call.CALL_DATETIME,'MM/DD/YYYY HH24:MI:SS')
BETWEEN tourFromDateTime AND tourToDateTime
and call.USER_ID = usr.USER_ID
and usr.ROLE_ID = rol.ROLE_ID;
OPEN p_COMMENTDATA for
Select TO_CHAR(DATETIME,'HH24:MI'),
COMMENTS
FROM CTS_TOUR_COMMENT
WHERE TO_CHAR(DATETIME,'MM/DD/YYYY HH24:MI:SS')
BETWEEN tourFromDateTime AND tourToDateTime
ORDER BY TO_CHAR(DATETIME,'HH24:MI');
EXCEPTION
WHEN NO_DATA_FOUND THEN Null;
WHEN OTHERS THEN Null;
END GENERATE_TOURLOG;
END PK_CTS_REPORTS;
Java Program which is calling the procedure is ...
Connection con = dbconn.getDBConnection();
String query="{ call PK_ACD_REPORTS.GENERATE_TOURLOG(?,?,?,?,?) }";
CallableStatement callStmt = con.prepareCall(query);
callStmt.setString(1,"07/01/04");
callStmt.setInt(2,3);
callStmt.registerOutParameter(3,OracleTypes.CURSOR);
callStmt.registerOutParameter(4,OracleTypes.CURSOR);
callStmt.registerOutParameter(5,OracleTypes.CURSOR);
callStmt.execute();
ResultSet rs = (ResultSet)callStmt.getObject(5);
if(rs != null) {
while(rs.next()) {
System.out.println(""+rs.getString(0));
}
} else System.out.println("RS is NULL");
After this program executed i am getting RS is NULL and and getting the sql exception "cursor is closed" but i am not closing cursor in the procedure.
Any suggestions please...
Srilakshmi