好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > oracle 存儲過程、函數和觸發器用法實例詳解

oracle 存儲過程、函數和觸發器用法實例詳解

熱門標簽:鶴壁電話機器人價格 網貸外呼系統合法嗎 安陽企業電銷機器人供應商 電銷套路機器人 手機地圖標注門店 杭州網絡外呼系統運營商 汽車4s店百度地圖標注店 地圖標注坐標圖標 地圖標注效果的制作

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

一、存儲過程和存儲函數

指存儲在數據庫中供所有用戶程序調用的子程序叫存儲過程、存儲函數。

創建存儲過程

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

語法:

create [or replace] procedure 過程名(參數列表)
as
PLSQL子程序體;
--給指定員工漲工資
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;

調用存儲過程

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

存儲函數

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

CREATE [OR REPLACE] FUNCTION 函數名 (參數列表)
RETURN 函數值類型
AS
PLSQL子程序體;

--查詢指定員工的年收入
create function queryEmpSal(empid in number)
return number
as
  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;

函數的調用

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

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

過程和函數中的IN和OUT

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

創建包和包體

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

--包定義
create [or replace] package 包名 as
[公有數據類型定義]
[公有游標聲明]
[公有變量、常量聲明]
[公有子程序聲明]
end 包名;

--包主體
create [or replace] package body 包名 as
[私有數據類型定義]
[私有變量、常量聲明]
[私有子程序聲明和定義]
[公有子程序定義]
begin
PL/SQL子程序體;
end 包名;

--創建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;

(*注意:包定義和包體要分開創建)
調用包

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

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

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

您可能感興趣的文章:
  • Oracle存儲過程基本語法介紹
  • Oracle 存儲過程總結(一、基本應用)
  • Oracle中 關于數據庫存儲過程和存儲函數的使用
  • 分解oracle存儲過程或函數調試過程步驟

標簽:銀川 南陽 焦作 河源 酒泉 梧州 柳州 泰安

巨人網絡通訊聲明:本文標題《oracle 存儲過程、函數和觸發器用法實例詳解》,本文關鍵詞  oracle,存儲,過程,函數,和,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《oracle 存儲過程、函數和觸發器用法實例詳解》相關的同類信息!
  • 本頁收集關于oracle 存儲過程、函數和觸發器用法實例詳解的相關信息資訊供網民參考!
  • 推薦文章