存储过程如下:
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;