日韩性视频-久久久蜜桃-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存储过程以及游标的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 欧美成欧美va | 日本免费a级片 | 国产最新自拍 | 日本精品视频一区二区三区 | 一级黄色大片网站 | 精品国偷自产一区二区三区 | av在线网页| 91重口味 | 日韩经典一区二区三区 | 亚洲人成网址 | 日本三级吃奶头添泬无码苍井空 | 超碰夫妻| 五月天综合色 | 亚洲区一区二区 | 美人被强行糟蹋np各种play | 久久精品一区二区三区四区 | 最新地址在线观看 | aⅴ在线免费观看 | 久色网站| 日韩午夜视频在线观看 | 午夜宅男影院 | 精品一性一色一乱农村 | 精品一区二区三区入口 | 欧美一区免费观看 | 欧美a图| 国产精品美女在线 | 蜜桃av色偷偷av老熟女 | 亚洲吧 | 中文字幕高清一区 | 特及毛片| 中文字幕88页 | 久草热播| 亚洲色图10p | 免费大黄网站 | 激情都市一区二区 | 男人的天堂黄色 | 久久看av| 国产精品九九热 | 日本午夜免费 | 色偷偷免费费视频在线 | 黑人玩弄人妻一区二区三区免费看 | 波多野吉衣一区二区三区 | 日韩精品一区二区三区在线观看 | 亲子乱对白乱都乱了 | 一区二区日本 | 久久精品色欲国产AV一区二区 | 日韩av无码久久 | 欧美精品偷拍 | 精品动漫av| 精品人妻无码一区二区三区蜜桃一 | 老牛影视av牛牛影视av | 黄色网址链接 | 欧美日韩在线免费视频 | 奇米影视久久 | 中文字幕a级片 | 在线免费观看av网站 | 国产精品久久久久久久久久久久 | 色香蕉影院 | 在线观看色网 | 亚洲成人生活片 | 免费国产黄色片 | 日本成人精品 | 日操干 | 污污的视频网站在线观看 | 国产又黄又硬又粗 | 亚洲无限看 | 午夜黄色影院 | 波多野结衣办公室双飞 | 电影寂寞少女免费观看 | 欧亚一级片 | 高hhhhh| av手机天堂 | 久久免费视频2 | 色播一区二区 | 天堂av手机在线 | 91热在线 | 久久黄色免费网站 | 黄色1级片 | 无码人妻丰满熟妇奶水区码 | 久久精品欧美一区二区三区麻豆 | 国产深夜福利在线 | 麻豆视频软件 | 国产精品伦一区二区三级古装电影 | 亚洲成人精品一区二区 | 中文字幕久久一区 | 亚洲二区一区 | 日本成人在线看 | 国产又黄又大又粗视频 | 好男人视频www | 黄色另类小说 | av老司机久久 | 穿扒开跪着折磨屁股视频 | 欧美二区在线观看 | 一级片免费网站 | 亚洲免费观看高清 | 成人视屏在线观看 | 黄色中文字幕在线观看 | 国产国语亲子伦亲子 | 精精国产xxxx视频在线 |