麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 數(shù)據(jù)庫 > Oracle > 正文

oracle 存儲過程、函數(shù)和觸發(fā)器用法實例詳解

2020-07-26 13:25:59
字體:
來源:轉載
供稿:網(wǎng)友

本文實例講述了oracle 存儲過程、函數(shù)和觸發(fā)器用法。分享給大家供大家參考,具體如下:

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

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

創(chuàng)建存儲過程

用CREATE PROCEDURE命令建立存儲過程。

語法:

create [or replace] procedure 過程名(參數(shù)列表)asPLSQL子程序體;
--給指定員工漲工資create procedure addSal(empid in number)as  psal emp.sal%type;begin  select sal into psal from emp where empno=empid;  update emp set sal = sal * 1.1 where empno=empid;  dbms_output.put_line(empid || '漲工資前' || psal || '漲工資后' || (psal * 1.1));end;

調(diào)用存儲過程

--方法一beginaddSal(7369);end;--方法二exec addSal(7369);

存儲函數(shù)

函數(shù)為一命名的存儲程序,可帶參數(shù),并返回一計算值。函數(shù)和過程的結構類似,但必須有一個return子句,用于返回函數(shù)值。函數(shù)說明要指定函數(shù)名,結果值的類型,以及參數(shù)類型等。
創(chuàng)建語法:

CREATE [OR REPLACE] FUNCTION 函數(shù)名 (參數(shù)列表)RETURN 函數(shù)值類型ASPLSQL子程序體;
--查詢指定員工的年收入create function queryEmpSal(empid in number)return numberas  psal emp.sal%type;  pcomm emp.comm%type;begin  select sal,comm into psal,pcomm from emp where empno=empid;  return (psal*12) + nvl(pcomm,0);end;

函數(shù)的調(diào)用

declare psal number;begin psal:=queryEmpSal(7369); dbms_output.put_line(psal);end;

begin dbms_output.put_line(queryEmpSal(7369));end;

過程和函數(shù)中的IN和OUT

一般來講,過程和函數(shù)的區(qū)別在于函數(shù)可以有一個返回值,而過程沒有返回值。
但過程和函數(shù)都可以通過out指定一個或多個輸出參數(shù)。我們可以利用out參數(shù),在過程和函數(shù)中實現(xiàn)返回多個值。
什么時候用存儲過程或函數(shù)?
原則:如果只有一個返回值,用存儲函數(shù),否則,就用存儲過程。

創(chuàng)建包和包體

什么是包和包體?
包是一組相關過程、函數(shù)、變量、常量、類型和游標等PL/SQL程序設計元素的組合。包具有面向對象設計的特點,是對這些PL/SQL程序設計元素的封裝。
包體是包定義部分的具體實現(xiàn)。
包由兩個部分組成:包定義和包主體。

--包定義create [or replace] package 包名 as[公有數(shù)據(jù)類型定義][公有游標聲明][公有變量、常量聲明][公有子程序聲明]end 包名;
--包主體create [or replace] package body 包名 as[私有數(shù)據(jù)類型定義][私有變量、常量聲明][私有子程序聲明和定義][公有子程序定義]beginPL/SQL子程序體;end 包名;
--創(chuàng)建mypackage包create or replace package mypackage as procedure total(num1 in number, num2 in number, num3 out number);end mypackage;
--mypackage包體create or replace package body mypackage as--計算累加和的total過程procedure total(num1 in number, num2 in number, num3 out number) as tmp number := num1;begin if num2 < num1 then num3 := 0; else num3 := tmp;  loop   exit when tmp > num2;   tmp := tmp + 1;   num3 := num3 + tmp;  end loop; end if;end total;end mypackage;

(*注意:包定義和包體要分開創(chuàng)建)
調(diào)用包

declare num1 number;begin mypackage.total(1, 5, num1); dbms_output.put_line(num1);end;

更多關于Oracle相關內(nèi)容感興趣的讀者可查看本站專題:《Oracle常用函數(shù)匯總》、《Oracle日期與時間操作技巧總結》及《php+Oracle數(shù)據(jù)庫程序設計技巧總結》

希望本文所述對大家Oracle數(shù)據(jù)庫程序設計有所幫助。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 免费视频一区 | 黄色视屏免费在线观看 | 欧美人与zoxxxx另类9 | 精品成人在线 | 亚洲小视频在线播放 | 在线观看中文字幕av | 国产做爰全免费的视频黑人 | 国产精品久久国产精麻豆96堂 | 少妇一级淫片免费放播放 | 黄色午夜剧场 | 国产91九色| 成人勉费视频 | 草莓福利视频在线观看 | 一级做a爱片性色毛片 | 久久久久久久久久久一区 | 国产精品一区在线免费观看 | 懂色av懂色aⅴ精彩av | 日本精品二区 | 成人性视频在线 | 久久综合入口 | 黄色片视频观看 | 精品午夜久久 | 午夜在线视频观看 | 久久精品9| 91精品久久久久久 | 看个毛片| 国产一级毛片高清视频完整版 | 日本在线播放一区二区三区 | 在线小视频国产 | h色视频在线观看 | 蜜桃久久一区二区三区 | 在线高清中文字幕 | 成人毛片在线 | 日本不卡一区二区在线观看 | 看一级毛片 | 免费观看一级 | 久久靖品| 久久久久久久久亚洲精品 | 日本一区二区视频在线观看 | 色蜜桃av| 欧美亚成人 |