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执行不了~谁能告诉我一下怎么用存储过程
那存储过程不能返回一个表么?我想执行存储过程返回一张表的话怎么写?不是把这个表存到另一个表或变量中 展开
is begin
select * from we_temp1;
end wy_temp;
没用过oracle存储过程~现在想查询一个表~写成存储过程~但是这么写报错~exec wy_temp执行不了~谁能告诉我一下怎么用存储过程
那存储过程不能返回一个表么?我想执行存储过程返回一张表的话怎么写?不是把这个表存到另一个表或变量中 展开
3个回答
展开全部
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;
假设你的表的结构这样:
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;
展开全部
存储过程里面不可以结果取出来放那就算,你得有变量去存储结果才行.
我给你个简单例子:
create or replace procedure wy_temp
is
rst emp%rowtype;
begin
select * into rst from emp where rownum=1;
end wy_temp;
这只是个简单例子,我只取了一条记录.
别的情况同理.反正就是这样个道理了.
我给你个简单例子:
create or replace procedure wy_temp
is
rst emp%rowtype;
begin
select * into rst from emp where rownum=1;
end wy_temp;
这只是个简单例子,我只取了一条记录.
别的情况同理.反正就是这样个道理了.
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
要使用游标
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;
如果想使用结果,就要设置传出参数
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;
如果想使用结果,就要设置传出参数
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询