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

來源:腳本之家  責任編輯:小易  

1.返回值的區別,函數有1個返回值,而存儲過程是通過參數返回的,可以有多個或者沒有2.調用的區別,函數可以在查詢語句中直接調用,而存儲過程必須單獨調用.函數一般情況下是用來計算并返回一個計算結果而存儲過程一般是用來完成特定的數據操作(比如修改、插入數據庫表或執行某些DDL語句等等)www.13333515.buzz防采集請勿采集本網。

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

函數與存儲過程的結構類似,但是函數必須有一個return子句,用于返回函數值。關鍵字為function。實例一: create or replace function func1 return varchar-必須有返回值,且聲明返回值類型時不需要加大

一、存儲過程和存儲函數

在oracle中,函數和存儲過程是經常使用到的,他們的語法中有很多相似的地方,但也有自己的特點。剛學完函數和存儲過程,下面來和大家分享一下自己總結的關于函數和存儲過程的區別。一、存儲過程 1.定義

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

1.返值區別,函數1返值,存儲程通參數返,或者沒 2.調用區別,函數查詢語句直接調用,存儲程必須單獨調用. 函數般情況用計算并返計算結存儲程般用完特定數據操作(比修改、插入數據庫表或執行某些DDL

創建存儲過程

函數和存儲過程的區別 從參數的返回情況來看: 如果返回多個參數值最好使用存儲過程,如果只有一個返回值的話可以使用函數;從調用情況來看: 如果在SQL語句(DML或SELECT)中調用的話一定是存儲函數或

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

創建過程 create or replace procedure add_emailinfo(namee email_info.fullname%type,address email_info.email_address%type) is begin insert into email_info(fullname,email_address)values

語法:

create [or replace] procedure 過程名(參數列表)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;

調用存儲過程

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

存儲函數

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

創建語法:

CREATE [OR REPLACE] FUNCTION 函數名 (參數列表)RETURN 函數值類型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;

函數的調用

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[私有數據類型定義][私有變量、常量聲明][私有子程序聲明和定義][公有子程序定義]beginPL/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數據庫程序設計有所幫助。

一、主體不同1、函數:當需要分析數據清單中的數值是否符合特定條件時,使用數據庫工作表函數。2、存儲過程:是在大型數據庫系統中,一組為了完成特定功能的SQL 語句集,存儲在數據庫中,一次編譯后永久有效。二、特點不同1、函數:只能來返回一個變量,可以嵌入sql中和存儲過自程中使用。2、存儲過程:用戶通過指定存儲過程的名字并給出參數(如果該存儲過程帶有參數)來執行。存儲過程是數據庫中的一個重要對象。在數據量特別龐大的情況下利用存儲過程能達到倍速的效率提升。三、功能不同1、函數:不能用臨時表,只能用表變量,函數不能執行一組修改全局數據庫狀態的操作。可以作為查詢語句的一個部分來調用,由于函數可以返回一個表對象,所以在查詢中位于from關鍵字后面。2、存儲過程:存儲過程需要讓sql的query可以執行,存儲過程可以返回參數,如記錄集。sql語句中不可以含有存儲過程。參考資料來源:百度百科-Oracle存儲過程參考資料來源:百度百科-數據庫函數內容來自www.13333515.buzz請勿采集。


  • 本文相關:
  • oracle 存儲過程詳細介紹(創建,刪除存儲過程,參數傳遞等)
  • oracle存儲過程返回游標實例詳解
  • oracle 在一個存儲過程中調用另一個返回游標的存儲過程
  • oracle存儲過程入門學習基本語法
  • oracle中 關于數據庫存儲過程和存儲函數的使用
  • oracle如何恢復被覆蓋的存儲過程
  • oracle數據庫中查看系統存儲過程的方法
  • oracle 存儲過程和函數例子
  • oracle 存儲過程總結 二、字符串處理相關函數
  • oracle存儲過程和存儲函數創建方法(詳解)
  • oracle存儲過程和自定義函數詳解
  • oracle學習記錄之使用自定義函數和觸發器實現主鍵動態生成
  • oracle 配置遠程訪問教程
  • oracle9i在win2k環境下的完全卸載
  • windows sever 2012下oracle 12c安裝配置方法圖文教程
  • linux下修改oracle監聽地址的方法
  • oracle實現自定義序列號生成的方法
  • 淺談oracle中單引號轉義
  • oracle創建設置查詢權限用戶的方法
  • 有關oracle數據庫的備份情況
  • oracle中dblink的實際應用示例詳解
  • 直接拷貝數據文件實現oracle數據遷移
  • oracle函數和存儲過程有什么區別
  • oracle函數和存儲過程有什么區別,說的細致些最好了。~
  • oracle中定義存儲過程和函數,到底有什么用?
  • Oracle中 存儲過程,過程和函數有什么區別和聯系
  • oracle存儲過程和函數的區別
  • oracle中函數和存儲過程的區別和聯系
  • Oracle 存儲過程和函數的區別
  • Oracle函數 和 Oracle存儲過程的區別
  • oracle存儲過程和函數的區別
  • Oracle 存儲過程和函數的區別
  • 網站首頁網頁制作腳本下載服務器操作系統網站運營平面設計媒體動畫電腦基礎硬件教程網絡安全mssqlmysqlmariadboracledb2mssql2008mssql2005sqlitepostgresqlmongodbredisaccess數據庫文摘數據庫其它首頁oracleoracle常用函數匯總oracle日期與時間操作技巧總結php+oracle數據庫程序設計技巧總結oracle 存儲過程詳細介紹(創建,刪除存儲過程,參數傳遞等)oracle存儲過程返回游標實例詳解oracle 在一個存儲過程中調用另一個返回游標的存儲過程oracle存儲過程入門學習基本語法oracle中 關于數據庫存儲過程和存儲函數的使用oracle如何恢復被覆蓋的存儲過程oracle數據庫中查看系統存儲過程的方法oracle 存儲過程和函數例子oracle 存儲過程總結 二、字符串處理相關函數oracle存儲過程和存儲函數創建方法(詳解)oracle存儲過程和自定義函數詳解oracle學習記錄之使用自定義函數和觸發器實現主鍵動態生成oracle 配置遠程訪問教程oracle9i在win2k環境下的完全卸載windows sever 2012下oracle 12c安裝配置方法圖文教程linux下修改oracle監聽地址的方法oracle實現自定義序列號生成的方法淺談oracle中單引號轉義oracle創建設置查詢權限用戶的方法有關oracle數據庫的備份情況oracle中dblink的實際應用示例詳解直接拷貝數據文件實現oracle數據遷移oracle 查看表空間的大小及使用情linux系統(x64)安裝oracle11g完oracle數據庫下載及安裝圖文操作oracle存儲過程基本語法介紹oracle 10g 安裝教程[圖文]oracle 如何查詢被鎖定表及如何解基于ora-12170 tns 連接超時解決oracle數據庫tns配置方法詳解oracle 創建表空間詳細介紹oracle中to_date詳細用法示例(ororacle求和代碼示例淺析oracle中char和varchar2的區別oracle統計時間段內每一天的數據(推薦)oracle備庫宕機啟動的完美解決方案詳解linux系統中oracle數據庫程序的啟動和oracle數據庫密碼文件的使用與維護oracle 11g安裝錯誤提示未找到wfmlrsvcaporacle中如何把表和索引放在不同的表空間在oracle數據庫中添加外鍵約束的方法詳解oracle pl/sql入門案例實踐
    免責聲明 - 關于我們 - 聯系我們 - 廣告聯系 - 友情鏈接 - 幫助中心 - 頻道導航
    Copyright © 2017 www.13333515.buzz All Rights Reserved
    3排列五开奖结果