日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

Oralce数据库之存储过程、存储函数、触发器和数据字典

發布時間:2025/3/20 数据库 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Oralce数据库之存储过程、存储函数、触发器和数据字典 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Oracle數據庫總結

Oracle數據庫之集合運算
Oracle數據庫之數據處理
Oracle數據庫之建表和管理表
Oracle數據庫之對象視圖、索引、序列、同義詞

一、存儲過程和存儲函數

1、概念
存儲在數據庫中供所有用戶程序調用的子程序,稱為存儲過程或者存儲函數

2、存儲過程語法

create [or replace] procedure 過程名(參數列表) asplsql子程序體

實例1:

create or replace procedure sayhelloworld as--說明部分 begindbms_output.put_line('Hello World'); end; /

實例2:

--給指定的員工漲500,并且打印漲前和漲后的薪水 create or replace procedure raiseSalary(eno in number) as--定義變量保存漲前的薪水psal emp.sal%type; beginselect sal into psal from emp where empno=eno;update emp set sal = sal+500 where empno=eno;dbms_output.put_line('漲前:'||psal||' 漲后:'||(psal+100));end; /

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

語法結構

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

實例1:

--查詢某個員工的年收入 create or replace function queryempincome(eno in number) return number as--月薪和獎金psal emp.sal%type;pcomm emp.comm%type; beginselect sal,comm into psal,pcomm from emp where empno=eno;--返回年收入return psal*12+nvl(pcomm,0); end; /

實例2:

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

二、觸發器

1、概念
數據庫觸發器是一個與表相關聯的、存儲的pl/sql程序。每當一個特定的數據操作語句(insert、delete、update)在指定的表上發出時,oracle自動的執行觸發器中定義的語句序列。

2、觸發器的類型
1)語句級觸發器
在指定的操作語句之前或者是之后執行一次,不管這條語句影響了多少行。
2)行級觸發器(for each row)
觸發語句作用的每一條語句都會觸發。

3、觸發器語法

create [or replace] trigger 觸發器名 {before|after} {delete|insert|update[of 列名]} on 表名 [for each row [when(條件)]] pl/sql語句塊

實例1:

--成功插入新員工后,自動打印“very good”create or replace trigger saynewemp after insert on emp declare begindbms_output.put_line('very good'); end; /

實例2:

/*漲后的工資不能少于漲前的工資 */ create or replace trigger checksalary before update on emp for each row begin--if 漲后的薪水 < 漲前的薪水 thenif :new.sal < :old.sal thenraise_application_error(-20002,'漲后的工資不能少于漲前的工資。漲前:'||:old.sal||' 漲后:'||:new.sal);end if;end; /

三、數據字典

1、數據字典介紹
oracle數據字典是有表和視圖組成的,存儲有關數據庫結構信息的一些數據庫對象。數據庫字典描述了實際數據是如何組織的。對它們可以象處理其他數據庫表或視圖一樣進行查詢,但不能進行任何修改。
  
  Oracle數據庫字典通常是在創建和安裝數據庫時被創建的,Oracle數據字典是Oracle數據庫系統工作的基礎,沒有數據字典的支持,Oracle數據庫系統就不能進行任何工作。
  
  在Oracle數據庫字典中,許多視圖都有三個不同的實例,它們的前綴分別為"USER_"、"ALL_“及"DBA_”。"USER_"為前綴的數據庫字典視圖通常記錄執行查詢的帳戶所擁有的對象的信息,"ALL_"為前綴的數據庫字典視圖通常記錄包括執行查詢的帳戶所擁有的對象的信息及授權至PUBLIC的帳戶用戶所擁有的對象的信息,"DBA_"為前綴的數據庫字典視圖則包含所有數據庫對象的信息,而不管其所有者。其他的字典視圖中主要的是V視圖,之所以這樣叫是因為他們都是以V視圖,之所以這樣叫是因為他們都是以VV或GV開頭的。V開頭的。V。V視圖是基于X虛擬視圖的。V虛擬視圖的。V。V視圖是SYS用戶所擁有的,在缺省狀況下,只有SYS用戶和擁有DBA系統權限的用戶可以看到所有的視圖,沒有DBA權限的用戶可以看到USER_和ALL_視圖,但不能看到DBA_視圖。與DBA_,ALL,和USER_視圖中面向數據庫信息相反,這些視圖可視的給出了面向實例的信息。
  
  在Oracle的絕大多數數據字典視圖中都有象DBA_TABLES,ALL_TABLES和USER_TABLES這樣的視圖家族。Oracle中有超過100個視圖家族,下表列出了最重要和最常用的視圖家族,需要注重的是每個視圖家族都有一個DBA_,一個ALL_一個USER_視圖。
 

 在Oracle中還有一些不常用的數據字典表,但這些表不是真正的字典家族,他們都是一些重要的單一的視圖。這些視圖見下表:
 

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的Oralce数据库之存储过程、存储函数、触发器和数据字典的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。