日期:2014-05-16  浏览次数:21428 次

如何在ORACLE 10G中创建带两个参数的存储过程并返回查询数据表
想实现传入起始日期和终止日期两个参数,然后将在这一时间段内的数据查询结果以数据表形式返回。想通过创建Oracle存储过程来实现,如何操作?以前在SQL SERVER中创建过,但是不知道在ORACLE中如何建立。谢谢了
------解决方案--------------------
oracle里面的存储过程格式为:
CREATE OR REPLACE PROCEDURE 存储过程名字 (参数1 IN NUMBER,     
参数2 IN NUMBER ) 
IS 
变量1 INTEGER :=0; 
变量2 DATE; 
BEGIN 
END 存储过程名字;

注意在oracle存储过程中如果使用了select 在字段后面要加上into来进行承接,否则会报错,例如:
select sysdate into 变量2 from dual。
------解决方案--------------------

CREATE OR REPLACE PROCEDURE pro_query_for_timezone (p_begin in varchar2,p_end in varchar2,p_rs out sys_refcursor )  as
  v_sqlstr varchar2(4000);
BEGIN 
     v_sqlstr := 'select * from 表 where 时间字段 between :p and :p ';
     open p_rs for v_sqlstr using p_begin,p_end;
    
END;


如果是字段是日期类型自己改成date
------解决方案--------------------
两个参数是不能实现你的要求的,因为存储过程没有返回值,可以在参数里面加一个out参数(该参数的数据类型是表类型)
------解决方案--------------------
exec procedure procedure_name(param1,param2...)
存储过程中参数分in,out,inout三种,你可以找本书或者网上直接搜一下,看看就明白了