asp如何返回Oracle9i中存储过程中的游标?存储过程如下,请教!! 真的有点挑战喽

yown 2004-12-10 02:26:27
存储过程:
type rs is ref cursor;

create procedure Test(username in varchar,ret out int,r out rs)
as
begin
open r for select * from Example where username=username;
end Test;
/
create table Example(username varchar(30),sex varchar(4))
insert into Example(username,sex) values('yong','M')
/

asp部分代码:
...
orconn="Provider=MSDAORA.1;Password=;Persist Security Info=false;User ID=system;Data Source=EP;"
Set conn=Server.CreateObject("ADODB.Connection")
conn.Open orconn
Set rs=Server.CreateObject("ADODB.Recordset")
Set CMD=Server.CreateObject("ADODB.Command")
CMD.ActiveConnection = conn
CMD.CommandType = 1 'adCmdText
CMD.CommandTimeout = 0
CMD.Prepared = true
CMD.CommandText = "{call Test(?)}"
CMD.Parameters.Append CMD.CreateParameter("username",200,1,30,"yong")
set rs.Source = CMD
set rs=CMD.Execute
rs.open()

'执行到这里没问题

我想在这里输出返回的记录集r,和返回的变量值ret,请教怎么输出,请调试程序

如果存储过程有二个返回的游标又该如何实现,谢谢!





...全文
176 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
gaoxiaospring 2004-12-16
  • 打赏
  • 举报
回复
CREATE OR REPLACE PACKAGE PKG AS
type rs is ref cursor;
END PKG;

create procedure Test(username in varchar,ret out int,r out PKG.rs)
as
begin
open r for select * from Example where username=username;
end Test;
beckhambobo 2004-12-15
  • 打赏
  • 举报
回复
用包体定义一个游标变量
create package test_age
as
type rs is ref cursor;
end;

create procedure Test(p_username in varchar,p_rs out test_age.rs)
as
begin
open p_rs for 'select * from Example where username='||p_username;
end Test;
/

ASP调用:
Set Conn=Server.CreateObject("ADODB.Connection")
Set Rs = Server.CreateObject("ADODB.Recordset")

'以下两句含在globo文件中
connstr="Provider=MSDAORA;Password=water;User ID=water;Data Source=oradb_netserver"
Session("connstr")=connstr

conn.Open Session("connstr")

Set CMD=Server.CreateObject("ADODB.Command")
CMD.ActiveConnection = conn
CMD.CommandType = adCmdText
CMD.CommandTimeout = 0
CMD.Prepared = true

CMD.CommandText = "{call test(?)}" 这里只写输入不写输出

CMD.Parameters.Append CMD.CreateParameter("p_username",129,1,4,username)'开始年份
set rs.Source = CMD
on error resume next
set rs=CMD.Execute

if err.number <> 0 then
response.Write err.Description
response.End
end if

rs.Open()
tigerjacky 2004-12-15
  • 打赏
  • 举报
回复
还真有难度!
qiaozhiwei 2004-12-14
  • 打赏
  • 举报
回复
可不可以,有个grid,然后绑定数据源
wupangzi 2004-12-11
  • 打赏
  • 举报
回复
没听说,可以返回游标的!这种问题都是灵活处理的!

17,082

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧