oracle oracle中ORA-00923: 未找到要求的 FROM 关键字
来源:互联网 发布:2006年网络歌曲大全 编辑:程序博客网 时间:2024/06/05 11:31
create or replace package my_package as
type my_cursor is ref cursor;
end my_package;
--创建一个分页过程
create or replace procedure fenye
( my_table in varchar2,--表明
my_record in number, --当前页的记录数
my_page in number,--当前的页数
my_sumrecord out number,--总记录数
my_sumpage out number,--总页数
p_cursor out my_package.my_cursor --返回记录集合
)is
--定义变量
v_begin number:=(my_page-1)*my_record+1;
v_end number:=my_page*my_record;
--定义一个sql语句
v_sql varchar2(1000);
begin
--执行sql语句
v_sql:='select * from (select t.*,rownum rn from(select * from ' ||my_table||')t where rownum<='||v_end||')where rn>='||v_begin;
--把游标和sql语句链接
open p_cursor for v_sql;
--计算my_sumrecord和my_sumpage
--写一个sql语句
v_sql:='select count(*) from' || my_table;
--将得到的返回值,赋值给my_sumrecord
execute immediate v_sql into my_sumrecord;
--计算my_sumpage
if mod(my_sumrecord,my_record)=0 then
--总记录数/当前页的记录数为0,那么总页数为:
my_sumpage:=my_sumrecord/my_record;
else
my_sumpage:=my_sumrecord/my_record+1;
end if;
close p_cursor;
end;
package oraclejdbc;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
public class FenYeTest {
public static void main(String[] args) {
try {
//加载驱动
Class.forName("oracle.jdbc.driver.OracleDriver");
//建立连接
Connection ct = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:orcl","scott", "tiger");
CallableStatement cs=ct.prepareCall("{call fenye(?,?,?,?,?,?)}");
//给输入的?赋值
cs.setString(1,"emp");
cs.setInt(2, 2);//第一个2代表fenye(?,?,?,?,?,?)函数里的第2个参数,第2个2代表当前页的记录数
cs.setInt(3, 1);//1代表第1页
//给输出的?赋值
cs.registerOutParameter(4, oracle.jdbc.OracleTypes.INTEGER);
cs.registerOutParameter(5, oracle.jdbc.OracleTypes.INTEGER);
cs.registerOutParameter(6, oracle.jdbc.OracleTypes.CURSOR);
//执行
cs.execute();
//取出总记录数
int my_sumrecord=cs.getInt(4);//getInt(4)中的4是由参数决定的
//取出总页数
int my_sumpage=cs.getInt(5);
ResultSet rs=(ResultSet) cs.getObject(6);
System.out.println("总记录数"+my_sumrecord);
System.out.println("总页数:"+my_sumpage);
while(rs.next()){
System.out.println("编号:"+rs.getInt(1));
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
用java测试时会报异常:
java.sql.SQLSyntaxErrorException: ORA-00923: 未找到要求的 FROM 关键字
ORA-06512: 在 "SCOTT.FENYE", line 24
ORA-06512: 在 line 1
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:439)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:395)
at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:802)
at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:436)
at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:186)
at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:521)
at oracle.jdbc.driver.T4CCallableStatement.doOall8(T4CCallableStatement.java:202)
at oracle.jdbc.driver.T4CCallableStatement.executeForRows(T4CCallableStatement.java:1005)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1307)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3449)
at oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStatement.java:3550)
at oracle.jdbc.driver.OracleCallableStatement.execute(OracleCallableStatement.java:4710)
at oracle.jdbc.driver.OraclePreparedStatementWrapper.execute(OraclePreparedStatementWrapper.java:1374)
at oraclejdbc.FenYeTest.main(FenYeTest.java:28)
原因是这里错了:v_sql:='select count(*) from' || my_table;
修改后为: v_sql:=' select count(*) from'||chr(10)||my_table;
异常处理了!!!
- oracle oracle中ORA-00923: 未找到要求的 FROM 关键字
- Oracle-ORA-00923: 未找到要求的FROM关键字-Oracle不支持TOP N查询
- Oracle rownum ORA-00923: 未找到要求的 FROM 关键字 (不积跬步,无以至千里)
- ORA-00923: 未找到要求的 FROM 关键字
- ORA-00923: 未找到要求的 FROM 关键字
- ORA-00923: 未找到要求的 FROM 关键字
- oracle未找到要求的from关键字,什么问题?
- spring+mybatis+oracle ORA-00923: 未找到预期 FROM 关键字
- tomcat:Cannot create PoolableConnectionFactory (ORA-00923: 未找到要求的 FROM 关键字)
- oracle 未找到要求的 from 关键字以及 乐观锁悲观锁
- 关于ORACLE查询列加()or () 报ORA-00923:未找找到要求的FROM关键字
- java.sql.SQLException:ORA-00923:未找到要求的From
- ora-00923:未找到要求的form关键字
- oracle查询提示未找到from关键字
- Cannot create PoolableConnectionFactory (ORA-00923: 未找到预期 FROM 关键字
- Cannot create PoolableConnectionFactory (ORA-00923: 未找到预期 FROM 关键字
- jdbc查询oracle数据库时出现未找到要求的 XXX 关键字可能原因
- oracle中插入数据出现错误:ORA-02291: 违反完整约束条件 (SCOTT.FK_SX9MLJB8T3FWB40GVCSKHYSYT)- 未找到父项关键字
- 替换ADT默认的debug.keystore
- 设计模式 --建造者模式
- 1020. Tree Traversals
- matlab 将dcm文件转换为raw
- mutt msmtp
- oracle oracle中ORA-00923: 未找到要求的 FROM 关键字
- vim插件的使用
- poisson方程组矩阵
- 【java】解析excel文档(兼容全版本)
- 把C#程序(含多个Dll)合并成一个Exe的超简单方法
- EaselJS简明教程1-绘图
- 小黄鸭调试法,每个程序员都要知道的
- EaselJS简明教程2-动画
- yii2 操作数据库