为什么要使用存储过程?
主要是从效率考虑,使用存储过程的效率要比往数据库中发送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);//获得输出参数