我有这样一个代码:
    --建一个包
create or replace package testpackage as type test_cursor is ref cursor;
end testpackage;
--分页的存储过程
create or replace procedure fenye(tableName in varchar2, pageSizes in number, --每页显示的记录数
pageNow in number, --第几页(当期页)
myRows out number, --总记录数
mypageCount out number, --总页数
my_cursor out testpackage.test_cursor --返回的记录集
) is
--定义一个字符串
v_sql varchar2(1000);v_begin number := (pageNow - 1) * pageSizes + 1; v_end number := pageNow * pageSizes;
beginv_sql := 'select * from (select t1.*,rownum rn from(select * from ' || tableName || ') t1 where rownum<=' || v_end || ') where rn>=' || v_begin;
--把游标和sql关联起来
open my_cursor for v_sql;v_sql := 'select count(*) from' || tableName; --组织一个sql
execute immediate v_sql into myRows; --把sql返回的值赋给myRows
if mod(myRows, pageSizes) = 0 thenmypageCount := myRows
/ pageSizes; elsemypageCount := (myRows
/ pageSizes) + 1; end if; 
close my_cursor; --关闭游标
end;--使用java测试
package com.test;
import java.sql.*;
public class Test3 { /**
 * @param args
 */
public static void main(String[] args) {
// TODO Auto-generated method stub
try {

Class.forName("oracle.jdbc.driver.OracleDriver");
Connection ct = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:myorcl1","SCOTT","543383076");
CallableStatement cs = ct.prepareCall("{call fenye(?,?,?,?,?,?)}");
cs.setInt(2, 3);
cs.setInt(3,1);
cs.setString(1, "emp");
cs.registerOutParameter(4, oracle.jdbc.OracleTypes.INTEGER);
cs.registerOutParameter(5, oracle.jdbc.OracleTypes.INTEGER);
cs.registerOutParameter(6, oracle.jdbc.OracleTypes.CURSOR);
cs.execute();

//ResultSet rs = (ResultSet)cs.getObject(6);
System.out.println(cs.getInt(4));
System.out.println(cs.getInt(5));


} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
} }
当我用java调试的时候怎么会有异常
问题出在execute immediate v_sql into myRows;这里
请大师请教