當前位置:首頁 » 存儲配置 » oracle存儲過程游標嵌套

oracle存儲過程游標嵌套

發布時間: 2023-11-20 13:18:15

A. oracle在存儲過程中定義游標

sql">createtableemp
(idvarchar2(10),
namevarchar2(20),
sexnumber,
tyvarchar2(20)
);

insertintoempvalues('001','Tom',1,'gcs');
insertintoempvalues('002','John',1,'dba');
insertintoempvalues('003','Jean',0,'gcs');
insertintoempvalues('004','Reid',1,'gcs');
commit;


createorreplaceprocerepro6as

cursorcris
select*
fromemp
wheresex=1
andty='gcs';
begin
forcr_resultincrloop
begin
dbms_output.put_line('ID:'||cr_result.id||'NAME:'||
cr_result.name);

end;
endloop;
endpro6;

B. oracle存儲過程游標使用疑問

1、for t_name in (select ...) loop
這個是隱式游標,相當於一個結果集,隱式Cursor由系統自動打開和關閉。
exit when %notfound是配合fetch使用,沒有fetch就不需要。

你第一個存儲過程可以這樣寫:
create or replace procere d_1 is
begin
for cur in (select * from t_t) ---這個cur是隱式游標,無需定義,直接使用。
loop
dbms_output.put_line(cur.name);
end loop;
end;
/
2、使用的是標準的顯式游標
a 定義游標---Cursor [Cursor Name] IS;
b 打開游標---Open [Cursor Name];
c 操作數據---Fetch [Cursor name]
d 關閉游標---Close [Cursor Name]
希望能幫到你。

C. oracle,在存儲過程中能嵌套存儲過程么最好舉個例子。

你指的是定義的嵌套吧。這樣就可以用一個procere定義符合軟降工程又比較復雜的邏輯了。
procere prc_main (p_msg varchar2) is
procere prc_inner (p_msg varchar2) is
begin
dbms_output.put_line ('this is inner: ' || p_msg);
end;
begin
prc_inner(p_msg);
end;
/

不過如果你的程序規模大,還推薦你看看package的語法。

D. oracle SQL語句中的游標,函數和存儲過程的區別

游標有顯示游標和隱式游標之分,顯示游標需要自己去定義,declare cursor(這個自己看書去吧),這樣使用游標一條條地取值使用。而隱式游標針對所有的select語句都是的。
函數和存儲過程幾乎沒有區別,只是前者有返回值,後者沒有,如果後者定義了出參,那就和函數的功能是一樣的了。

E. oracle中存儲過程執行很長時間,用了三個游標。

不用看執行計劃都知道慢了,
for c1
for c2
for c3
這種沒有任何條件的三重循環的時間復雜度為C1記錄數*C2記錄數*C3記錄數,你得盡量減少循環次數,能用sql就不要用游標循環了

熱點內容
什麼軟體可以查找電腦的密碼 發布:2024-07-20 09:04:51 瀏覽:716
qt的交叉編譯 發布:2024-07-20 09:03:38 瀏覽:505
android窗口 發布:2024-07-20 08:58:51 瀏覽:640
親搭app怎麼下載安卓版 發布:2024-07-20 08:58:48 瀏覽:253
安卓系統怎麼下載匯智動漫 發布:2024-07-20 08:55:07 瀏覽:187
c語言調試在哪 發布:2024-07-20 08:54:32 瀏覽:774
華為筆記本電腦dns伺服器 發布:2024-07-20 08:34:53 瀏覽:981
群暉取消上傳 發布:2024-07-20 08:13:56 瀏覽:505
雲伺服器怎麼充值系統 發布:2024-07-20 07:45:50 瀏覽:757
蕾姆雙飛解壓碼 發布:2024-07-20 07:43:14 瀏覽:315