1.存儲過程初探

先來看一個簡單的存儲過程

 create or replace procedure proc1(
    para1 varchar2,
    para2 out varchar2,
    para3 in out varchar2
 ) as
 v_name varchar2(20);
 begin
    v_name :='zhanghaiwei';
    para3 := v_name;
    dbms_output.put_line('para3:'||para3);
 end;

其構(gòu)成:

  1. 創(chuàng)建語句:create or replace procedure 存儲過程名

如果沒有or replace語句单鹿,則僅僅是新建一個存儲過程。如果系統(tǒng)存在該存儲過程劲妙,則會報錯。Create or replace procedure 如果系統(tǒng)中沒有此存儲過程就新建一個镣奋,如果系統(tǒng)中有此存儲過程則把原來刪除掉,重新創(chuàng)建一個存儲過程侨颈。

?????存儲過程名定義:包裹存儲過程名和參數(shù)列表(參數(shù)名和參數(shù)類型)哈垢,參數(shù)名不能重復(fù),參數(shù)傳遞方式:IN,OUT,IN OUT:
?????IN表示輸入?yún)?shù)耘分,按值傳遞方式。如果存儲過程的參數(shù)沒有指定存參數(shù)傳遞類型央渣,默認(rèn)為IN ;
?????OUT表示輸出參數(shù)渴频,可以理解為按引用傳遞方式,可以作為存儲過程的輸出結(jié)果卜朗,供外部調(diào)用者使用。需要注意聊替,當(dāng)一個參數(shù)被指定為OUT類型時培廓,就算在調(diào)用存儲過程之前對該參數(shù)進(jìn)行了賦值,在存儲過程中該參數(shù)的值仍然是null;
?????IN OUT既可以作為輸入?yún)?shù)泣港,也可作為輸出參數(shù);
?????參數(shù)的數(shù)據(jù)類型只需要指明類型名即可价匠,不需要指定寬度,參數(shù)的寬度由外部調(diào)用者決定坡氯。

  1. 變量聲明塊

緊跟著as(is)關(guān)鍵字,或者用declare關(guān)鍵字箫柳,用于聲明變量悯恍,變量聲明塊用于聲明該存儲過程需要用到的變量,他的作用域為該存儲過程涮毫,另外這里聲明的變量必須指定寬度,遵循PL/SQL的變量聲明規(guī)范。

  1. 過程語句塊

從begin 關(guān)鍵字開始為過程的語句塊顷帖。存儲過程的具體邏輯在這里來實現(xiàn)渤滞。

  1. 異常處理塊

關(guān)鍵字為exception ,為處理語句產(chǎn)生的異常妄呕。該部分為可選

  1. 結(jié)束塊

由end關(guān)鍵字結(jié)果


另附:

我們無法在存儲過程的定義中指定存儲參數(shù)的寬度绪励,也就導(dǎo)致了我們無法在存儲過程中控制傳入變量的寬度,這個寬度是完全由外部傳入是決定的。

create or replace procedure proc2(
para1 varchar2,
para2 out varchar2,
para3 in out varchar2
) as
v_name varchar2(2);
begin
para2 :='aaaaaaaaaaaaaaaaaaaa';
end;

--調(diào)用proc2
var p1 varchar2(1);
var p2 varchar2(1);
var p3 varchar2(1);
exec :p2 := 'a';
exec proc1(:p1,:p2,:p3);


在該過程中大莫,p_para2被賦予了20個字符a. 
而在外部的調(diào)用過程中,p2這個參數(shù)僅僅被定義為varchar2(1). 
而把p2作為參數(shù)調(diào)用這個過程烙丛,卻并沒有報錯羔味。而且它的真實值就是20個a 

執(zhí)行這個過程,仍然正確執(zhí)行赋元。 

可見,對于IN參數(shù)情屹,其寬度是由外部決定垃你。 
對于OUT 和IN OUT 參數(shù)惜颇,其寬度是由存儲過程內(nèi)部決定凌摄。 
因此漓帅,在寫存儲過程時忙干,對參數(shù)的寬度進(jìn)行說明是非常有必要的捐迫,最明智的方法就是參數(shù)的數(shù)據(jù)類型使用%type施戴。這樣雙方就達(dá)成了一致。 

參數(shù)默認(rèn)值

create or replace procedure procdefault(
  p1 varchar2,
  p2 varchar2 default 'mark'
) as
begin
  dbms_output.put_line(p2);
end;

可以通過default 關(guān)鍵字為存儲過程的參數(shù)指定默認(rèn)值雷则。在對存儲過程調(diào)用時月劈,就可以省略默認(rèn)值。

需要注意的是:默認(rèn)值僅僅支持IN傳輸類型的參數(shù)湾盒。OUT 和 IN OUT不能指定默認(rèn)值 
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末罚勾,一起剝皮案震驚了整個濱河市尖殃,隨后出現(xiàn)的幾起案子送丰,更是在濱河造成了極大的恐慌器躏,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,919評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異状婶,居然都是意外死亡馅巷,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,567評論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來逗噩,“玉大人,你說我怎么就攤上這事捶障∠盍叮” “怎么了锭部?”我有些...
    開封第一講書人閱讀 163,316評論 0 353
  • 文/不壞的土叔 我叫張陵拌禾,是天一觀的道長湃窍。 經(jīng)常有香客問我您市,道長茵休,這世上最難降的妖魔是什么泽篮? 我笑而不...
    開封第一講書人閱讀 58,294評論 1 292
  • 正文 為了忘掉前任帽撑,我火速辦了婚禮亏拉,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己笙僚,他們只是感情好肋层,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,318評論 6 390
  • 文/花漫 我一把揭開白布净薛。 她就那樣靜靜地躺著蒲拉,像睡著了一般雌团。 火紅的嫁衣襯著肌膚如雪锦援。 梳的紋絲不亂的頭發(fā)上雨涛,一...
    開封第一講書人閱讀 51,245評論 1 299
  • 那天凉泄,我揣著相機(jī)與錄音后众,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛距帅,可吹牛的內(nèi)容都是我干的碌秸。 我是一名探鬼主播讥电,決...
    沈念sama閱讀 40,120評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼瞬测,長吁一口氣:“原來是場噩夢啊……” “哼月趟!你這毒婦竟也來了狮斗?” 一聲冷哼從身側(cè)響起弧蝇,我...
    開封第一講書人閱讀 38,964評論 0 275
  • 序言:老撾萬榮一對情侶失蹤沙峻,失蹤者是張志新(化名)和其女友劉穎两芳,沒想到半個月后怖辆,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,376評論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,592評論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了画拾。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片青抛。...
    茶點(diǎn)故事閱讀 39,764評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡宪睹,死狀恐怖蚕钦,靈堂內(nèi)的尸體忽然破棺而出嘶居,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 35,460評論 5 344
  • 正文 年R本政府宣布,位于F島的核電站芋忿,受9級特大地震影響戈钢,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜开仰,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,070評論 3 327
  • 文/蒙蒙 一恩溅、第九天 我趴在偏房一處隱蔽的房頂上張望暴匠。 院中可真熱鬧傻粘,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,697評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽良拼。三九已至庸推,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背肘习。 一陣腳步聲響...
    開封第一講書人閱讀 32,846評論 1 269
  • 我被黑心中介騙來泰國打工脖含, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留投蝉,地道東北人墓拜。 一個月前我還...
    沈念sama閱讀 47,819評論 2 370
  • 正文 我出身青樓夏醉,卻偏偏與公主長得像,于是被迫代替她去往敵國和親氯夷。 傳聞我的和親對象是個殘疾皇子腮考,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,665評論 2 354

推薦閱讀更多精彩內(nèi)容

  • oracle存儲過程常用技巧 我們在進(jìn)行pl/sql編程時打交道最多的就是存儲過程了。存儲過程的結(jié)構(gòu)是非常的簡單的...
    dertch閱讀 3,493評論 1 12
  • 啟蒙的時候,認(rèn)識竹子是回外婆的鄉(xiāng)下馍迄。外婆家的的房前屋后都栽種了幾簇老竹攀圈。婆娑的葉子擋住熱辣辣的艷陽赘来,風(fēng)兒吹過竹林,...
    Li小丫閱讀 881評論 4 7
  • 全文約3500字-閱讀約8分鐘 從沒想過本來以分享個人成長和家庭教育為目的開設(shè)的公眾號拿穴,我的第一篇文章竟是以此文開...
    fe6158175012閱讀 279評論 1 2
  • 剛來教學(xué)樓總感覺有大事要發(fā)生,果不其然腿宰,過了一會兒我最好的屌絲基友就給我打來了電話缘厢,這個迷茫中的名牌大學(xué)的好...
    來自對外漢語小白的分享閱讀 76評論 0 0
  • 上座氣悶性急椿每,是根本無明,在內(nèi)翻動,只有沉毅堅忍汁尺,與習(xí)氣奮斗痴突,經(jīng)過幾千百次翻騰上落,如舟行于海帮碰,忽而狂風(fēng)巨浪...
    洞見妙山閱讀 255評論 0 0