create or replace procedure up_test(o out sys_refcursor) is
begin
open o for select * from lq_test;
fetch…… 之后回傳就沒資料了,不想多次查詢
end;
uj5u.com熱心網友回復:
create or replace procedure up_test(o out sys_refcursor) isbegin
open o for select * from lq_test;
end;
可以直接這樣寫,當你呼叫存盤程序的時候,讓它賦值給一個游標,然后取資料就可以了
uj5u.com熱心網友回復:
需要對取出的資料進行判斷處理,再回傳原來游標的內容uj5u.com熱心網友回復:
你需要怎么判斷處理?要回傳什么樣的結果?uj5u.com熱心網友回復:
create or replace function test() iso 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; 不回傳資料,請指教
uj5u.com熱心網友回復:
create or replace procedure pr_test(p_id varchar2)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;
這樣執行
uj5u.com熱心網友回復:
重復的帖子了1、 通過 dbms_output.put_line (r.k);可以查看游標取回的資料。PS,執行set serveroutput on
2、如果在其他session中看的話,注意執行完陳述句要commit
3、盡量不要再函式中進行insert,update等操作。建議放到程序中去
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/92145.html
標籤:開發
上一篇:oracle 游標 函式
下一篇:sql執行太長怎么處理,能縮短
