我有这样一个代码:
  --建一个包
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;这里
请大师赐教:  异常是:
 Exception in thread "main" java.sql.SQLException: ORA-00923: FROM keyword not found where expected
ORA-06512: at "SCOTT.SP_FENYE", line 16
ORA-06512: at line 1 at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:288)
at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:743)
at oracle.jdbc.driver.T4CCallableStatement.doOall8(T4CCallableStatement.java:212)
at oracle.jdbc.driver.T4CCallableStatement.executeForRows(T4CCallableStatement.java:951)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1160)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3285)
at oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStatement.java:3390)
at oracle.jdbc.driver.OracleCallableStatement.execute(OracleCallableStatement.java:4223)
at com.hanjie.Oraclce_fenye.main(Oraclce_fenye.java:32)