當前位置:首頁 » 存儲配置 » 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就不要用游標循環了

熱點內容
mysql讀取sql 發布:2023-12-09 09:02:13 瀏覽:586
我的世界網易版電腦和手機伺服器互通 發布:2023-12-09 08:47:02 瀏覽:561
手機迅雷上傳 發布:2023-12-09 08:47:02 瀏覽:236
python添加字典中 發布:2023-12-09 08:37:14 瀏覽:510
android標題欄自定義 發布:2023-12-09 08:13:36 瀏覽:970
崩壞三安卓4服是哪個渠道的 發布:2023-12-09 07:57:51 瀏覽:846
javahdfs文件上傳 發布:2023-12-09 06:46:42 瀏覽:856
如何使用安卓手機玩手游 發布:2023-12-09 06:20:59 瀏覽:77
存儲電腦上網 發布:2023-12-09 06:19:41 瀏覽:224
ftp判斷並創建目錄 發布:2023-12-09 06:15:16 瀏覽:820