日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Oracle存储过程以及游标

發布時間:2025/4/5 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Oracle存储过程以及游标 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一.存儲過程

1、存儲過程定義
所謂存儲過程(Stored Procedure),就是一組用于完成特定數據庫功能的SQL語句集,該SQL語句集經過
編譯后存儲在數據庫系統中。在使用時候,用戶通過指定已經定義的存儲過程名字并給出相應的存儲過程參數
來調用并執行它,從而完成一個或一系列的數據庫操作。

2、存儲過程的創建
Oracle存儲過程包含三部分:過程聲明執行過程部分存儲過程異常

1)無參存儲過程語法:

create or replace procedure NoParPro ?
?as ?//聲明 ?
?; ?
?begin // 執行 ?
?; ?
?exception//存儲過程異常 ?
?; ?
?end;

2)帶參存儲過程實例

create or replace procedure queryempname(sfindno emp.empno%type) ??
as ?
? ?sName emp.ename%type; ?
? ?sjob emp.job%type; ?
begin ?
? ? ? ?.... ?
exception ?
? ? ? ?.... ?
end;

3)帶參數存儲過程含賦值方式

create or replace procedure runbyparmeters ? ?
? ? (isal in emp.sal%type, ??
? ? ?sname out varchar, ?
? ? ?sjob in out varchar) ?
?as ??
? ? icount number; ?
?begin ?
? ? ? select count(*) into icount from emp where sal>isal and job=sjob; ?
? ? ? if icount=1 then ?
? ? ? ? .... ?
? ? ? else ?
? ? ? ?.... ?
? ? ?end if; ?
exception ?
? ? ?when too_many_rows then ?
? ? ?DBMS_OUTPUT.PUT_LINE('返回值多于1行'); ?
? ? ?when others then ?
? ? ?DBMS_OUTPUT.PUT_LINE('在RUNBYPARMETERS過程中出錯!'); ?
end;

詳解:

其中參數IN表示輸入參數,是參數的默認模式。
OUT表示返回值參數,類型可以使用任意Oracle中的合法類型。
OUT模式定義的參數只能在過程體內部賦值,表示該參數可以將某個值傳遞回調用他的過程
IN OUT表示該參數可以向該過程中傳遞值,也可以將某個值傳出去。

二.游標

1.游標概念

游標實際上是一種能從包括多條數據記錄的結果集中每次提取一條記錄的機制。游標充當指針的作用。盡管游標能遍歷結果中的所有行,但他一次只指向一行。?

2.游標作用

概括來講,SQL的游標是一種臨時的數據庫對象,即可以用來存放在數據庫表中的數據行副本,也可以指向存儲在數據庫中的數據行的指針。游標提供了在逐行的基礎上操作表中數據的方法。 游標的一個常見用途就是保存查詢結果,以便以后使用。游標的結果集是由SELECT語句產生,如果處理過程需要重復使用一個記錄集,那么創建一次游標而重復使用若干次,比重復查詢數據庫要快的多。 大部分程序數據設計語言都能使用游標來檢索SQL數據庫中的數據,在程序中嵌入游標和在程序中嵌入SQL語句相同 。

1)存儲過程游標定義使用:
as //定義(游標一個可以遍歷的結果集) ??
CURSOR cur_1 IS ??
? SELECT area_code,CMCODE,SUM(rmb_amt)/10000 rmb_amt_sn, ?
? ? ? ? ?SUM(usd_amt)/10000 usd_amt_sn ??
? FROM BGD_AREA_CM_M_BASE_T ??
? WHERE ym >= vs_ym_sn_beg ??
? ? ? ?AND ym <= vs_ym_sn_end ??
? GROUP BY area_code,CMCODE; ??
? ? ??
begin //執行(常用For語句遍歷游標) ? ? ??
FOR rec IN cur_1 LOOP ??
? UPDATE xxxxxxxxxxx_T ??
? ?SET rmb_amt_sn = rec.rmb_amt_sn,usd_amt_sn = rec.usd_amt_sn ??
? ?WHERE area_code = rec.area_code ??
? ?AND CMCODE = rec.CMCODE ??
? ?AND ym = is_ym; ??
END LOOP;

2)游標定義

--顯示cursor的處理
declare ?
---聲明cursor,創建和命名一個sql工作區
cursor cursor_name is ?
? ? select real_name from account_hcz;
? ? v_realname varchar2(20);
begin?
? ? open cursor_name;---打開cursor,執行sql語句產生的結果集
? ? fetch cursor_name into v_realname;--提取cursor,提取結果集中的記錄
? ? dbms_output.put_line(v_realname);
? ? close cursor_name;--關閉cursor
end;

三.在Oracle中對存儲過程的調用使用

1)調用?方式1

declare ?
? ? ? realsal emp.sal%type; ?
? ? ? realname varchar(40); ?
? ? ? realjob varchar(40); ?
begin ? //過程調用開始 ?
? ? ? realsal:=1100; ?
? ? ? realname:=''; ?
? ? ? realjob:='CLERK'; ?
? ? ? runbyparmeters(realsal,realname,realjob);--必須按順序 ?
? ? ? DBMS_OUTPUT.PUT_LINE(REALNAME||' ? '||REALJOB); ?
END; ?//過程調用結束

2)?調用方式2

declare ?
? ? ?realsal emp.sal%type; ?
? ? ?realname varchar(40); ?
? ? ?realjob varchar(40); ?
begin ? ?//過程調用開始 ?
? ? ?realsal:=1100; ?
? ? ?realname:=''; ?
? ? ?realjob:='CLERK'; ?
? ? ?--指定值對應變量順序可變 ?
? ? ?runbyparmeters(sname=>realname,isal=>realsal,sjob=>realjob); ? ? ? ? ??
? ? DBMS_OUTPUT.PUT_LINE(REALNAME||' ? '||REALJOB); ?
END; ?//過程調用結束

3)調用方式3(SQL命令行下)

1、SQL>exec proc_emp('參數1','參數2');//無返回值過程調用 2、SQL>var vsal number SQL> exec proc_emp ('參數1',:vsal);// 有返回值過程調用 或者:call proc_emp ('參數1',:vsal);// 有返回值過程調用

?

?

?

?

總結

以上是生活随笔為你收集整理的Oracle存储过程以及游标的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美日韩成人一区 | 用力挺进新婚白嫩少妇 | 美女精品在线 | 欧美激情视频一区 | 自拍偷拍视频网 | 国产成人精品在线 | 国产1区2区3区4区 | 无码人妻精品一区二区三区99v | 精品国产自在精品国产精小说 | 97久久国产 | 成人免费看片又大又黄 | 视频一区二区在线 | 欧美大片在线免费观看 | 午夜黄色录像 | 动漫av在线| 久久人| 青青操免费| 中文字幕在线观看免费视频 | 一本久道视频一本久道 | 国产偷人妻精品一区二区在线 | 韩国三级av | 91亚洲精品乱码久久久久久蜜桃 | av在线资源网| 色乱码一区二区三区熟女 | 97成人在线观看 | 国产麻豆天美果冻无码视频 | 乱淫av| 中文字幕亚洲乱码熟女一区二区 | 精品视频久久久久久久 | 国产精品久久久久久免费观看 | 91官网视频 | 亚洲欧美自拍一区 | 精品人妻一区二区三区四区在线 | 日韩在线高清视频 | 国产在线你懂得 | 夜夜撸网站 | 无码粉嫩虎白一线天在线观看 | 成人一区二 | 欧美精品成人久久 | 亚洲国产精品一区二区久久hs | 久久精品色妇熟妇丰满人妻 | 欧美顶级metart裸体全部自慰 | 免费处女在线破视频 | 国产精品成人国产乱 | 亚州av网站| 亚洲在线免费观看 | 6080亚洲精品一区二区 | 在线免费日韩 | 无码gogo大胆啪啪艺术 | av鲁丝一区鲁丝二区鲁丝三区 | 九九九精品视频 | 尤物193.com| xxxwww国产| 操一操| 和漂亮岳做爰3中文字幕 | 黄色精品在线 | 97偷拍视频| av观看在线免费 | 91精品国产亚洲 | 日韩二区三区四区 | 中文字幕免费高 | 欧美日韩亚洲二区 | 久久91亚洲人成电影网站 | 在线免费观看视频网站 | 精品国产一区二区三区噜噜噜 | 豆花av在线 | 日本视频免费在线 | 一级aaa毛片 | 黄色高清在线观看 | 色婷婷国产精品视频 | 亚洲精品无码不卡在线播he | 一品道av | 日本视频一区二区三区 | 日韩久久av | 欧美人与性动交α欧美精品 | 久久福利影院 | 欧美日韩国产精品一区二区 | 激情四射综合网 | 中文一级片| 天天夜夜操 | 国产swag在线观看 | 娇小tube性极品娇小 | 色婷婷av一区二区三区之红樱桃 | 美女啪啪网| 亚洲大胆视频 | 黑人巨大精品欧美黑寡妇 | 亚洲av无码一区二区三区观看 | 2024国产精品 | 亚洲一二区视频 | 成人黄性视频 | 国内精品久久久久久久 | 国产白浆在线 | 国产剧情一区二区三区 | 成人三级在线播放 | 中文字幕爱爱 | 黄色在线一区 | 欧美mv日韩mv国产网站 | 欧美日韩福利视频 | 国产粉嫩呻吟一区二区三区 |