create or replace procedure up_test(o out sys_refcursor) is
begin
open o for select * from lq_test;
fetch…… 之后返回就没数据了,不想多次查询
end;
begin
open o for select * from lq_test;
fetch…… 之后返回就没数据了,不想多次查询
end;
解决方案 »
- 我下载了ODAC 11.2 Release 5,想使用Oracle Provider for OLE DB 进行数据库的连接等操作,但是不知引用那个dll文件
- oracle:新手请教用户更改表空间的相关问题
- sqlplus和pl/sql developer不同步
- 很麻烦的一个问题!高手来解决
- 游标嵌套和循环嵌套的问题,快快来看:先把sql中pubs数据库的authors、titles、titleauthor三张表传到oracle中,执行下面的饿语句,总是
- 关于oracle job 提问,紧急
- 安装Oracle失败!
- 将Excel表导入oracle数据库方法?
- /etc/oratab文件是干嘛用的?怎么就有了,从别的地方COPY一个能不能行?
- SQL函数转ORACLE函数 ,在线等待,有点难度!
- sql执行太长怎么处理,能缩短
- oracle 游标 函数
begin
open o for select * from lq_test;
end;
可以直接这样写,当你调用存储过程的时候,让它赋值给一个游标,然后取数据就可以了
o sys_refcursor;
r a%rowtype;
begin
open o for select * from a where id=5;
fetch o into r;
if o%fount then
insert into b (m) values (r.k);
end if;
return o;
end; 不返回数据,请指教
as
o sys_refcursor ;
r emp%rowtype;
begin
open o for select * from a where id=p_id;
LOOP
fetch o into r;
exit when o%notfound ;
insert into b(m) values (r.k);
dbms_output.put_line (r.k);
end loop;
end;-----------------------------
begin
pr_test(5);
end;这样执行
1、 通过 dbms_output.put_line (r.k);可以查看游标取回的数据。PS,执行set serveroutput on
2、如果在其他session中看的话,注意执行完语句要commit
3、尽量不要再函数中进行insert,update等操作。建议放到过程中去