*小问题:存储过程中如何返回数据集?

adailee 2004-09-06 04:52:16
MS SQL中很简单,Select * from dbo.table_1就可以了。但是在Oracle中怎么办?
用Cursor?还是什么?量级轻,适应大量并发的处理方式是什么???
...全文
1059 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
LovenDreams 2004-09-08
  • 打赏
  • 举报
回复
dinya2003 2004-09-07
  • 打赏
  • 举报
回复
使用游标之后,客户端得到的是数据集么?(ADO.Net)
另外,这种游标,能保证效率么?


1.是的.
2.过程返回记录集效率还是比较高的,直接从应用程序中传递代码系统要分析,要花一定的时间,而且增加了一定的网络数据流量.
dinya2003 2004-09-07
  • 打赏
  • 举报
回复
贴了好多次的代码,再帖一次,

--包头
create or replace package pkg_test
as
type myCursor is ref cursor;
function get(p_id number) return myCursor;
end pkg_test;


--包体
create or replace package body pkg_test
as
--输入ID 返回记录集的函数
function get(p_id number) return myCursor is
rc myCursor;
strsql varchar2(200);
begin
if p_id=0 then
open rc for select a.user_name from fnd_user a ;
else
strsql:='select a.user_name from fnd_user a where a.user_id=:p_id';
open rc for strsql using p_id;
end if;
return rc;
end get;

end pkg_test;

--调用测试
set serverout on
declare
w_rc pkg_test.myCursor;
w_name varchar2(100);
begin
w_rc:=pkg_test.get(0);
loop
fetch w_rc into w_name;
exit when w_rc%notfound;
dbms_output.put_line(w_name);
end loop;
end;
/
yown 2004-09-07
  • 打赏
  • 举报
回复
是的,使用游标返回数据集,一般使用在函数中,至于执行效率,你可以进行优化
adailee 2004-09-07
  • 打赏
  • 举报
回复
使用游标之后,客户端得到的是数据集么?(ADO.Net)
另外,这种游标,能保证效率么?
ineedtostudy 2004-09-07
  • 打赏
  • 举报
回复
就使用游标
Daivy2008 2004-09-07
  • 打赏
  • 举报
回复
用游标可以!
jinbingg 2004-09-07
  • 打赏
  • 举报
回复
up 我觉得我调有这oralce存储过程也难受。没有sqlserver的方遍
adailee 2004-09-07
  • 打赏
  • 举报
回复
TO:zhihaitao(云-松-)
指程序中传递的SQL语句。
一来,传递SQL语句文本比较长,而存储过程只是一个很短的名字,长短比例大约是10:1。访问密集的情况下,存储过程有优势。
二来,SQL语句到数据库服务器中执行前要分析、编译;而存储过程是已经分析过、编译完成了的,可以立即执行。
zhihaitao 2004-09-07
  • 打赏
  • 举报
回复
为什么直接从应用程序中传递代码系统要分析?
adailee 2004-09-06
  • 打赏
  • 举报
回复
帮帮忙!
adailee 2004-09-06
  • 打赏
  • 举报
回复
用游标似乎可以。
create or replace function sp_ListEmp return types.cursortype as
l_cursor types.cursorType;
begin
open l_cursor for select ename, empno from emp order by ename;
return l_cursor;
end;

但是不明白,这个东西,可以和MS SQL的select ename, empno from emp order by ename存储过程等价么??还有,效率怎么样?可以支持超大数量的的并发访问么????
yangqingdelphi 2004-09-06
  • 打赏
  • 举报
回复
据我了解,没有这种功能.我也知道mssql有这种功能.
帮你顶
adailee 2004-09-06
  • 打赏
  • 举报
回复
困惑。请各位指教。

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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