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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

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

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

Oracle數(shù)據(jù)庫總結(jié)

Oracle數(shù)據(jù)庫之集合運(yùn)算
Oracle數(shù)據(jù)庫之?dāng)?shù)據(jù)處理
Oracle數(shù)據(jù)庫之建表和管理表
Oracle數(shù)據(jù)庫之對(duì)象視圖、索引、序列、同義詞

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

1、概念
存儲(chǔ)在數(shù)據(jù)庫中供所有用戶程序調(diào)用的子程序,稱為存儲(chǔ)過程或者存儲(chǔ)函數(shù)

2、存儲(chǔ)過程語法

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

實(shí)例1:

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

實(shí)例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、存儲(chǔ)函數(shù)
函數(shù)為一命名的存儲(chǔ)程序,可帶參數(shù),并返回一個(gè)計(jì)算值。函數(shù)和存儲(chǔ)過程類似,但函數(shù)必須return子句用于返回值。函數(shù)說明必須指定函數(shù)名、結(jié)果值的類型和參數(shù)類型。

語法結(jié)構(gòu)

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

實(shí)例1:

--查詢某個(gè)員工的年收入 create or replace function queryempincome(eno in number) return number as--月薪和獎(jiǎng)金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; /

實(shí)例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; /

二、觸發(fā)器

1、概念
數(shù)據(jù)庫觸發(fā)器是一個(gè)與表相關(guān)聯(lián)的、存儲(chǔ)的pl/sql程序。每當(dāng)一個(gè)特定的數(shù)據(jù)操作語句(insert、delete、update)在指定的表上發(fā)出時(shí),oracle自動(dòng)的執(zhí)行觸發(fā)器中定義的語句序列。

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

3、觸發(fā)器語法

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

實(shí)例1:

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

實(shí)例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; /

三、數(shù)據(jù)字典

1、數(shù)據(jù)字典介紹
oracle數(shù)據(jù)字典是有表和視圖組成的,存儲(chǔ)有關(guān)數(shù)據(jù)庫結(jié)構(gòu)信息的一些數(shù)據(jù)庫對(duì)象。數(shù)據(jù)庫字典描述了實(shí)際數(shù)據(jù)是如何組織的。對(duì)它們可以象處理其他數(shù)據(jù)庫表或視圖一樣進(jìn)行查詢,但不能進(jìn)行任何修改。
  
  Oracle數(shù)據(jù)庫字典通常是在創(chuàng)建和安裝數(shù)據(jù)庫時(shí)被創(chuàng)建的,Oracle數(shù)據(jù)字典是Oracle數(shù)據(jù)庫系統(tǒng)工作的基礎(chǔ),沒有數(shù)據(jù)字典的支持,Oracle數(shù)據(jù)庫系統(tǒng)就不能進(jìn)行任何工作。
  
  在Oracle數(shù)據(jù)庫字典中,許多視圖都有三個(gè)不同的實(shí)例,它們的前綴分別為"USER_"、"ALL_“及"DBA_”。"USER_"為前綴的數(shù)據(jù)庫字典視圖通常記錄執(zhí)行查詢的帳戶所擁有的對(duì)象的信息,"ALL_"為前綴的數(shù)據(jù)庫字典視圖通常記錄包括執(zhí)行查詢的帳戶所擁有的對(duì)象的信息及授權(quán)至PUBLIC的帳戶用戶所擁有的對(duì)象的信息,"DBA_"為前綴的數(shù)據(jù)庫字典視圖則包含所有數(shù)據(jù)庫對(duì)象的信息,而不管其所有者。其他的字典視圖中主要的是V視圖,之所以這樣叫是因?yàn)樗麄兌际且訴視圖,之所以這樣叫是因?yàn)樗麄兌际且訴V或GV開頭的。V開頭的。VV視圖是基于X虛擬視圖的。V虛擬視圖的。VV視圖是SYS用戶所擁有的,在缺省狀況下,只有SYS用戶和擁有DBA系統(tǒng)權(quán)限的用戶可以看到所有的視圖,沒有DBA權(quán)限的用戶可以看到USER_和ALL_視圖,但不能看到DBA_視圖。與DBA_,ALL,和USER_視圖中面向數(shù)據(jù)庫信息相反,這些視圖可視的給出了面向?qū)嵗男畔ⅰ?br />   
  在Oracle的絕大多數(shù)數(shù)據(jù)字典視圖中都有象DBA_TABLES,ALL_TABLES和USER_TABLES這樣的視圖家族。Oracle中有超過100個(gè)視圖家族,下表列出了最重要和最常用的視圖家族,需要注重的是每個(gè)視圖家族都有一個(gè)DBA_,一個(gè)ALL_一個(gè)USER_視圖。
 

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

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

總結(jié)

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

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。