oracle--存儲過程和存儲函數(shù)

存儲過程和存儲函數(shù)

一棉姐、概念:

指存儲在數(shù)據(jù)庫中供所有用戶程序調(diào)用的子程序叫存儲過程肛搬、存儲函數(shù)岸啡。

存儲過程和存儲函數(shù)區(qū)別:

相同點:都是完成特定功能的子程序
不同點:存儲函數(shù)可以通過return語句返回一個函數(shù)的值,而存儲過程則不可以抚恒。

二、創(chuàng)建存儲過程:

用create procedure命令建立存儲錯過程

語法:
create [or replace] procedure 過程名(參數(shù)列表)
as
    plsql子程序體;

例:

打印Hello World:

create or replace procedure sayHelloWorld
as
  --說明部分
begin
   dbms_output.put_line('Hello World');

end;

三络拌、存儲過程調(diào)用

調(diào)用存儲過程:兩種方式:

1.exec sayHelloWorld();
2.begin
     sayHelloWorld();
     sayHelloWorld();
   end;

帶參數(shù)的:輸入?yún)?shù)用in俭驮,輸出參數(shù)用out

--給指定的員工漲100,并且打印漲前和漲后的薪水
create or replace procedure raisesalary(eno in number)
as
   --定義變量保存漲前的薪水
   psal emp.sal%type;
begin
   --得到漲前的薪水
   select sal into psal from emp where empno=eno;

   --漲100
   update emp set sal=sal+100 where empno=eno;

    --要不要commit春贸?不要混萝,應(yīng)由調(diào)用該存儲函數(shù)的語句來提交,保證在同一個事務(wù)中萍恕。

   dbms_output.put_line('漲前:'||psal||'   漲后:'||(psal+100));

end;

調(diào)用:
begin
raisesalary(7839);
raisesalary(7566);
commit;

四逸嘀、存儲函數(shù)

函數(shù)為一命名的存儲程序,可帶參數(shù)允粤,并返回一計算值崭倘。函數(shù)和過程的結(jié)構(gòu)類似,但必須有一個return子句类垫,用于返回函數(shù)值司光。函數(shù)說明要指定函數(shù)名、結(jié)果值得類型悉患,以及參數(shù)類型等残家。

建立存儲函數(shù)的語法:

create [or replace] function 函數(shù)名(參數(shù)列表) 
return 函數(shù)值類型
as
    plsql子程序體;

例:

--查詢某個員工的年收入
create or replace function queryempincome(eno in number)
return number
as
   --定義變量保存月薪和獎金
   psal emp.sal%type;
   pcomm emp.comm%type;
begin
   select sal,comm into psal,pcomm from emp where empno=eno;

   --返回年收入
   return psal*12+nvl(pcomm,0);
end;

過程和函數(shù)中的in和out

一般來講,過程和函數(shù)的區(qū)別在于函數(shù)可以有一個返回值售躁;而過程沒有返回值坞淮。

但過程和函數(shù)都可以通過out指定一個或多個輸出參數(shù)。我們可以利用out參數(shù)陪捷,在過程和函數(shù)中實現(xiàn)返回多個值回窘。

原則:如果只有一個返回值,用存儲函數(shù)揩局;否則毫玖,用存儲過程。

查詢某個員工的姓名 月薪 職位:

create or replace procedure queryempinfo(eno in number,
                                            pename out varchar2,
                                            psal   out number,
                                            pjob   out varchar2)
as
begin
  select ename,sal,empjob into pename,psal,pjob from emp where empno=eno;
end;

問題:

1.查詢某個員工的所有信息 ---> out參數(shù)太多
2.查詢某個部門中的所有員工信息 ---> 返回集合
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市付枫,隨后出現(xiàn)的幾起案子烹玉,更是在濱河造成了極大的恐慌,老刑警劉巖阐滩,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件二打,死亡現(xiàn)場離奇詭異,居然都是意外死亡掂榔,警方通過查閱死者的電腦和手機(jī)继效,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來装获,“玉大人瑞信,你說我怎么就攤上這事⊙ㄔィ” “怎么了凡简?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長精肃。 經(jīng)常有香客問我秤涩,道長,這世上最難降的妖魔是什么司抱? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任筐眷,我火速辦了婚禮,結(jié)果婚禮上习柠,老公的妹妹穿的比我還像新娘匀谣。我一直安慰自己,他們只是感情好津畸,可當(dāng)我...
    茶點故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布振定。 她就那樣靜靜地躺著,像睡著了一般肉拓。 火紅的嫁衣襯著肌膚如雪后频。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天暖途,我揣著相機(jī)與錄音卑惜,去河邊找鬼。 笑死驻售,一個胖子當(dāng)著我的面吹牛露久,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播欺栗,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼毫痕,長吁一口氣:“原來是場噩夢啊……” “哼征峦!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起消请,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤栏笆,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后臊泰,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蛉加,經(jīng)...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年缸逃,在試婚紗的時候發(fā)現(xiàn)自己被綠了针饥。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,137評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡需频,死狀恐怖丁眼,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情贺辰,我是刑警寧澤户盯,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布,位于F島的核電站饲化,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏吗伤。R本人自食惡果不足惜吃靠,卻給世界環(huán)境...
    茶點故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望足淆。 院中可真熱鬧巢块,春花似錦、人聲如沸巧号。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽丹鸿。三九已至越走,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間靠欢,已是汗流浹背廊敌。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留门怪,地道東北人骡澈。 一個月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像掷空,于是被迫代替她去往敵國和親肋殴。 傳聞我的和親對象是個殘疾皇子囤锉,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,901評論 2 345

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