oracle存储过程 查询

createorreplaceprocedurewy_tempisbeginselect*fromwe_temp1;endwy_temp;没用过oracle存储过程~现在... create or replace procedure wy_temp
is begin
select * from we_temp1;
end wy_temp;
没用过oracle存储过程~现在想查询一个表~写成存储过程~但是这么写报错~exec wy_temp执行不了~谁能告诉我一下怎么用存储过程
那存储过程不能返回一个表么?我想执行存储过程返回一张表的话怎么写?不是把这个表存到另一个表或变量中
展开
 我来答
vinson_shen
2010-08-12 · TA获得超过2503个赞
知道小有建树答主
回答量:960
采纳率:100%
帮助的人:0
展开全部
oracle下,不能像SQL SERVER那样直接在存储过程里返回一个列表结果的结果集,可以考虑用游标输出参数返回输出结果集,然后再调用游标来循环显示结果集(请参考下面的示例):

假设你的表的结构这样:
create table we_temp1(id int,name varchar(20))

那建立存储过程如下:
create or replace procedure wy_temp
(
o_result out sys_refcursor
)
is
begin
open o_result for select * from we_temp1;
end wy_temp;

调用存储过程并显示游标的结果集:
declare
v_result sys_refcursor;
v_id int;
v_name varchar2(20);
begin
wy_temp(v_result);
loop
fetch v_result into v_id,v_name;
exit when v_result%notfound;
dbms_output.put_line('列id的值:'||to_char(v_id));
dbms_output.put_line('列name的值:'||v_name);
end loop;
close v_result;
exception
when others then
dbms_output.put_line(sqlerrm);
end;
我在哪我是谁X
推荐于2017-10-11 · TA获得超过1620个赞
知道小有建树答主
回答量:350
采纳率:0%
帮助的人:255万
展开全部
存储过程里面不可以结果取出来放那就算,你得有变量去存储结果才行.
我给你个简单例子:
create or replace procedure wy_temp
is
rst emp%rowtype;
begin
select * into rst from emp where rownum=1;
end wy_temp;

这只是个简单例子,我只取了一条记录.
别的情况同理.反正就是这样个道理了.
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
I_am内幕帝
2010-08-12
知道答主
回答量:9
采纳率:0%
帮助的人:1.5万
展开全部
要使用游标

create or replace procedure wy_temp
is
cursor c is select * from we_temp1;--将查询的结果保存在游标c中
begin
for v_temp in c loop --对游标c进行循环
--
你想做的一些事情.....
--
end loop;
end;
如果想使用结果,就要设置传出参数
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式