当前位置: 代码迷 >> Oracle管理 >> 调用oracle存储过程的有关问题
  详细解决方案

调用oracle存储过程的有关问题

热度:78   发布时间:2016-04-24 05:53:55.0
调用oracle存储过程的问题
存储过程如下: 
create or replace package Tools 
is 
  type ResultData is ref cursor; 
  procedure sp_Page(p_OutCursor out ResultData); 
end Tools; 

create or replace package body Tools 
is 
  procedure sp_Page(p_OutCursor out ResultData) 
  as 
  begin 
  v_sql := 'select * from tablename' 
  OPEN p_OutCursor FOR v_sql; 
  end sp_Page; 
end Tools; 
在asp中调用: 
 Set RS = Server.CreateObject( ADODB.RecordSet ) 
 Set CMD = Server.CreateObject( ADODB.Command ) '建立对象 
  SQLstr = {CALL Tools.sp_page({resultset 100,p_OutCursor})} 
 CMD.ActiveConnection = Con ‘建立CMD对象与Con的联系。con的代码省略 
  CMD.CommandType = 4 
 CMD.CommandText = SQLstr ‘指定Command对象的执行字符串。 
  SET RS=CMD.Execute() 
  do while not Rs.eof 
  response.write(rs("字段名")) 
  Rs.movenext 
  loop 
我知道这样是错的,可不知道要怎么写,请大家帮帮忙。

------解决方案--------------------
asp 调用 oracle存储过程并返回结果集 

看过网上好多asp调用oracle的方法,但是没有特好特直接的东西,所以总结各家的东西最后得出的一个自己需要的方法,感觉也比较大众所以特此发布 

SQL code
################################################### oracle的存储过程 ################################################### --创建包头 create or replace package pck_as as type t_product_id is table of number index by binary_integer; type t_serial_no is table of varchar(300) index by binary_integer; type t_buy_date is table of date index by binary_integer; procedure allsfc ( product_id out t_product_id, serial_no out t_serial_no, buy_date out t_buy_date ); --procedure allsfc1; end pck_as; --创建包体 create or replace package body pck_as as procedure allsfc ( product_id out t_product_id, serial_no out t_serial_no, buy_date out t_buy_date ) is cursor cur_sfc_tbl_product_reg is select product_id,serial_no,buy_date from sfc_tbl_product_reg; i number default 1; begin for onrecord in cur_sfc_tbl_product_reg loop product_id(i) := onrecord.product_id; serial_no(i) := onrecord.serial_no; buy_date(i) := onrecord.buy_date; i := i + 1; end loop; end; end;
  相关解决方案