儲存過程 檢視 觸發器 序列
一、儲存過程(Stored Procedure)是在大型中,一組為了完成特定功能的SQL 語句集,經編譯後儲存在資料庫中,使用者透過指定儲存過程的名字並給出引數(如果該儲存過程帶有引數)來執行它。
儲存過程的優點:
(
p_MATERIALID NVARCHAR2,
p_flag out integer
)
is
begin
delete from MATERIALINFO where MATERIALID = p_MATERIALID;
if SQL%FOUND then
p_flag := 1;
else
p_flag := 0;
end if;
commit;
exception
when no_data_found
then
null;
when others
then
raise;
end SP_D_MATERIALINFOByKey;
二、觸發器(Trigger)
觸發器(trigger)是個特殊的,它的執行不是由程式呼叫,也不是手工啟動,而是由事件來觸發,當對一個表進行操作( insert,delete, update)時就會啟用它執行。觸發器經常用於加強資料的完整性約束和業務規則等。 觸發器可以從 DBA_TRIGGERS ,USER_TRIGGERS 資料字典中查到。
觸發器的優點:
CREATE OR REPLACE TRIGGER IOCS.Before_Insert
BEFORE INSERT
ON IOCS.BASEINFO
REFERENCING NEW AS New OLD AS Old
FOR EACH ROW
DECLARE
tmpVar NUMBER;
BEGIN
tmpVar := 0;
SELECT MySeq.NEXTVAL INTO tmpVar FROM dual;
:NEW.SequenceColumn := tmpVar;
:NEW.CreatedDate := SYSDATE;
:NEW.CreatedUser := USER;
EXCEPTION
WHEN OTHERS THEN
-- Consider logging the error and then re-raise
RAISE;
END ;
三、檢視(View):
檢視簡介:
檢視的優點:
儲存過程的優點:
1.儲存過程只在創造時進行編譯,以後每次執行儲存過程都不需再重新編譯,而一般SQL語句每執行一次就編譯一次,所以使用儲存過程可提高資料庫執行速度。
2.當對資料庫進行復雜操作時(如對多個表進行Update,Insert,Query,Delete時),可將此複雜操作用儲存過程封裝起來與資料庫提供的事務處理結合一起使用。
3.儲存過程可以重複使用,可減少資料庫開發人員的工作量
4.安全性高,可設定只有某此使用者才具有對指定儲存過程的使用權
儲存過程的種類:
1.系統儲存過程:以sp_開頭,用來進行系統的各項設定.取得資訊.相關管理工作,如 sp_help就是取得指定物件的相關資訊
2.擴充套件儲存過程 以XP_開頭,用來呼叫提供的功能exec master..xp_cmdshell 'ping 10.8.16.1'
3.使用者自定義的儲存過程,這是我們所指的儲存過程
語法
CREATE OR REPLACE procedure IOCS.SP_D_MATERIALINFOByKey(
p_MATERIALID NVARCHAR2,
p_flag out integer
)
is
begin
delete from MATERIALINFO where MATERIALID = p_MATERIALID;
if SQL%FOUND then
p_flag := 1;
else
p_flag := 0;
end if;
commit;
exception
when no_data_found
then
null;
when others
then
raise;
end SP_D_MATERIALINFOByKey;
二、觸發器(Trigger)
觸發器(trigger)是個特殊的,它的執行不是由程式呼叫,也不是手工啟動,而是由事件來觸發,當對一個表進行操作( insert,delete, update)時就會啟用它執行。觸發器經常用於加強資料的完整性約束和業務規則等。 觸發器可以從 DBA_TRIGGERS ,USER_TRIGGERS 資料字典中查到。
觸發器的優點:
觸發器可透過資料庫中的相關表實現級聯更改,不過,透過級聯引用完整性約束可以更有效地執行這些更改。觸發器可以強制比用約 束定義的約束更為複雜的約束。與 CHECK 約束不同,觸發器可以引用其它表中的列。例如,觸發器可以使用另一個表中的 SELECT 比較插入或更新的資料,以及執行其它操作,如修改資料或顯示使用者定義錯誤資訊。觸發器也可以評估資料修改前後的表狀態,並根據其差異采取對策。一個表中的 多個同類觸發器(INSERT、UPDATE 或 DELETE)允許採取多個不同的對策以響應同一個修改語句。觸發器語法(Oracle)
CREATE OR REPLACE TRIGGER IOCS.Before_Insert
BEFORE INSERT
ON IOCS.BASEINFO
REFERENCING NEW AS New OLD AS Old
FOR EACH ROW
DECLARE
tmpVar NUMBER;
BEGIN
tmpVar := 0;
SELECT MySeq.NEXTVAL INTO tmpVar FROM dual;
:NEW.SequenceColumn := tmpVar;
:NEW.CreatedDate := SYSDATE;
:NEW.CreatedUser := USER;
EXCEPTION
WHEN OTHERS THEN
-- Consider logging the error and then re-raise
RAISE;
END ;
三、檢視(View):
檢視簡介:
檢視是基於一個表或多個表或檢視的邏輯表,本身不包含資料,透過它可以對錶裡面的資料進行查詢和修改。檢視基於的表稱為基表。檢視是儲存在資料字典裡的一條select語句。 透過建立檢視可以提取資料的邏輯上的集合或組合。
檢視的優點:
1.對資料庫的訪問,因為檢視可以有選擇性的選取資料庫裡的一部分。檢視的語法:
2.使用者透過簡單的查詢可以從複雜查詢中得到結果。
3.維護資料的獨立性,試圖可從多個表檢索資料。
4.對於相同的資料可產生不同的檢視。
- CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW view_name
- [(alias[, alias]...)]
- AS subquery
- [WITH CHECK OPTION [CONSTRAINT constraint]]
- [WITH READ ONLY]
其中:
OR REPLACE :若所建立的試圖已經存在,ORACLE自動重建該檢視;
FORCE :不管基表是否存在ORACLE都會自動建立該檢視;
NOFORCE :只有基表都存在ORACLE才會建立該檢視:
alias :為檢視產生的列定義的別名;
subquery :一條完整的SELECT語句,可以在該語句中定義別名;
WITH CHECK OPTION :
插入或修改的資料行必須滿足檢視定義的約束;
WITH READ ONLY :
該檢視上不能進行任何DML操作。
例如:
- CREATE OR REPLACE VIEW dept_sum_vw
- (name,minsal,maxsal,avgsal)
- AS SELECT d.dname,min(e.sal),max(e.sal),avg(e.sal)
- FROM emp e,dept d
- WHERE e.deptno=d.deptno
- GROUP BY d.dname;
四、序列(Sequence):
Sequence是按照一定規則自動增加的數字序列。這個序列一般作為代理主鍵(因為不會重複),沒有其他任何意義。
Sequence是的特性,有的資料庫實現了Sequence,有的則沒有。比如Oracle、DB2、PostgreSQL資料庫實現Sequence,MySQL、SQL Server、Sybase等資料庫沒有Sequence。
Sequence 語法:
Sequence 語法:
定義一個seq_test,最小值為10000,最大值為99999999999999999,從20000開始,增量的步長為1,快取為20的迴圈排序Sequence。
Oracle的定義方法:
create sequence seq_testminvalue 10000maxvalue 99999999999999999start with 20000increment by 1cache 20cycleorder;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28699126/viewspace-757265/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 破解儲存過程,函式,檢視,觸發器解密儲存過程函式觸發器解密
- 檢視錶,儲存過程,觸發器定義的方法儲存過程觸發器
- oracle 建立表,序列,索引,檢視,觸發器,函式,儲存過程,定時器,包體Oracle索引觸發器函式儲存過程定時器
- 檢視錶、檢視、索引、儲存過程和觸發器的定義的方法索引儲存過程觸發器
- 瞭解使用mysql 的檢視、儲存過程、觸發器、函式....MySql儲存過程觸發器函式
- oracle儲存過程和觸發器Oracle儲存過程觸發器
- 七、函式-儲存過程-觸發器函式儲存過程觸發器
- Oracle檢視錶、儲存過程、觸發器、函式等物件定義語句Oracle儲存過程觸發器函式物件
- 2020重新出發,MySql基礎,MySql檢視&索引&儲存過程&觸發器MySql索引儲存過程觸發器
- SQL Server實戰五:儲存過程與觸發器SQLServer儲存過程觸發器
- MySQL--儲存過程與檢視MySql儲存過程
- mybatis呼叫檢視和儲存過程MyBatis儲存過程
- 第五篇 : MySQL 之 檢視、觸發器、儲存過程、函式、事物與資料庫鎖MySql觸發器儲存過程函式資料庫
- mysql檢視儲存過程show procedure status;MySql儲存過程
- 檢視正在執行的儲存過程儲存過程
- 檢視和儲存過程相關物件儲存過程物件
- 【MySQL】MySQL(三)儲存過程和函式、觸發器、事務MySql儲存過程函式觸發器
- 儲存過程、觸發器與事務之間的關係儲存過程觸發器
- Oracle中用sql查詢獲取資料庫的所有觸發器,所有儲存過程,所有檢視,所有表...OracleSQL資料庫觸發器儲存過程
- 《MySQL 基礎篇》九:儲存過程、流程控制和觸發器MySql儲存過程觸發器
- mssql bcp 工具用法和檢視角色儲存過程SQL儲存過程
- 如何在MySQL後設資料庫裡檢視索引,約束,觸發器,儲存過程和事件的相關資訊MySql資料庫索引觸發器儲存過程事件
- (interbase之九)intebase的儲存過程、觸發器以及事件、異常 (轉)儲存過程觸發器事件
- sql server 2000/2005/2008 判斷儲存過程、觸發器、檢視是否存在並刪除SQLServer儲存過程觸發器
- 檢視、儲存過程以及許可權控制練習儲存過程
- DBMS_PROFILER 檢視儲存過程執行時間儲存過程
- 通過v$access檢視正在執行的儲存過程procedure儲存過程
- 由於儲存過程及觸發器引用ORACLE動態檢視v$session編譯不透過而執行時報錯ORA-04098儲存過程觸發器OracleSession編譯
- 基礎——使用檢視和儲存過程的優缺點儲存過程
- oracle自動生成編譯所有函式、儲存過程、觸發器的語句Oracle編譯函式儲存過程觸發器
- MySQL儲存過程詳解 mysql 儲存過程MySql儲存過程
- MySQL 高階 | 用儲存過程、定時器、觸發器來解決資料分析問題MySql儲存過程定時器觸發器
- 【Database】Oracle10g檢視正在執行的儲存過程DatabaseOracle儲存過程
- 儲存過程中查詢資料字典檢視(v$或dba)儲存過程
- 儲存過程儲存過程
- 如何把SQL Server中一個表,一個儲存過程,一個檢視等改為系統表,系統儲存過程,系統檢視等...SQLServer儲存過程
- Oracle認證 :Oracle中重新編譯無效的儲存過程,或函式、觸發器Oracle編譯儲存過程函式觸發器
- 關於檢視和儲存過程的許可權問題探究儲存過程