为什么要使用存储过程?
主要是从效率考虑,使用存储过程的效率要比往数据库中发送sql语句,编写sql语句来执行效率要高,存储过程事先已经过编译,会省掉编译的环节。在网络传输方面也会节省很多,通常是要向数据库中发送长长的sql语句,存储过程只需要传送几个参数即可,会大大提高执行的效率。
1.编写存储过程
尝试编写oracle的存储过程
create or replace procedure test1pro(nsrsbh in varchar2, rs out SYS_REFCURSOR) is tablename varchar2(40); querysql varchar2(200); begin tablename:='out_khxx'; querysql:='select * from '||tablename||' where 1=1'; if nsrsbh != ''
querysql:=querysql||' and nsrsbh='''||nsrsbh||''''; open rs for querysql; end test1pro; 写好存储过程后进行编译,直至最后通过
2.进行测试
我是在PL/SQL中编写的存储过程,还能够对其进行测试,类似于debug功能,单步执行,查看变量的值,最后得到输出值,看是否与你想要的结果一样
3.编写程序调用存储过程
最后写调用存储过程的程序代码
CallableStatement proc = conn.prepareCall("{call test1pro(?,?)}");//调用存储过程 String nsrsbh=""; proc.setString(1,nsrsbh); //给输入参数传值 proc.registerOutParameter(2,OracleTypes.CURSOR);//声明输出参数类型 proc.execute(); //执行 ResultSet rs = (ResultSet)proc.getObject(2);//获得输出参数
