當前位置:首頁 » 存儲配置 » oracle觸發器與存儲過程

oracle觸發器與存儲過程

發布時間: 2023-03-23 02:36:13

⑴ oracle的存儲過程

1.存儲過程可以使得程序執行效率更高、安全性更好,因為過程建立之後 已經編譯並且儲存到資料庫,直接寫sql就需要先分析再執行因此過程效率更高,直接寫sql語句會帶來安全性問題,如:sql注入
2.建立過程不會很耗系統資源,因為過程只是在調用才執行。
3.存儲過程可以用於降低網路流量,存儲過程代碼直接存儲於資料庫中,所以不會產生大量T-sql語句的代碼流量。

4.使用存儲過程使您能夠增強對執行計劃的重復使用,由此可以通過使用遠程過程調用 (RPC) 處理伺服器上的存儲過程而提高性能。RPC 封裝參數和調用伺服器端過程的方式使引擎能夠輕松地找到匹配的執行計劃,並只需插入更新的參數值。

5.可維護性高,更新存儲過程通常比更改、測試以及重新部署程序集需要較少的時間和精力。

6.代碼精簡一致,一個存儲過程可以用於應用程序代碼的不同位置。

7.增強安全性:
a、通過向用戶授予對存儲過程(而不是基於表)的訪問許可權,它們可以提供對特定數據的訪問;
b、提高代碼安全,防止 SQL注入(但未徹底解決,例如,將數據操作語言--DML,附加到輸入參數);
c、SqlParameter 類指定存儲過程參數的數據類型,作為深層次防禦性策略的一部分,可以驗證用戶提供的值類型(但也不是萬無一失,還是應該傳遞至資料庫前得到附加驗證)。

缺點就是:
1、大量的利用過程,會對伺服器壓力比較大。

⑵ oracle觸發器調用存儲過程報錯

call
和exce
調用
存儲過程
是在slqplus及command窗口裡面,在程序及sql窗口裡面
用begin
end調用,或者採用動態執行的方法調用
你直接調用即可,不需call

⑶ 如何在存儲過程中建立觸發器

(1).存儲過程:
create
procere
for_select(你想用的觸發器名字)
delare
@name
char(8)
output(用於輸出的),@age
int
output(用於輸出),@phone_num
char(11)
(輸入)
as
select
@name=name(列名),@age=age(列名)
from
table_name(表名)
where
phone_num(列名)=@phone_num
(2)觸發器
create
tigger
for_update
on
table_name
after
update
as
if(update(phone_num))
update
table_name2
set
phone_num=i.phone_num
from
deleted
d,inserted
i
where
table_name.phone_num=d.phone_num
end
其中:deleted與inserted是sql中默認的臨時表。用來儲存原來的值和插入的值。本觸發器的作用是
當更新table_name
中的phone_num時table_name1中的phone_num也一起更新!注意觸發器只能用於update.insert.delete.select中不能用於創建表............

⑷ 資料庫存儲過程、函數、觸發器的區別是什麼

三者差別:

1、存儲過程實現的功能要復雜一點,而函數實現的功能針對性比較強。;

2、存儲過程一般是作為一個獨立的部分來執行,而函數可以作為查詢語句的一個部分來調用;

3、觸發器是特殊的存儲過程,存儲過程需要程序調用,而觸發器會自動執行。

分別含義:

1、存儲過程的特點

①存儲過程只在創建時進行編譯,以後執行存儲過程都不需再重新編譯,而一般SQL語句每執行一次就編譯一次,所以使用存儲過程可提高資料庫執行速度。

② 當對資料庫進行復雜操作時(如對多個表進行Update、Insert、Query、Delete時),可將此復雜操作用存儲過程封裝起來。

③可以在過程中調用另一個存儲過程。可以在存儲過程中調用函數。這可以簡化一系列復雜語句。

④ 安全性高,可設定只有某用戶才具有對指定存儲過程的使用權。

⑤參數有三種(IN、OUT、IN OUT),可返回多個參數值。

⑥在ORACLE中,若干個有聯系的過程可以組合在一起構成程序包。

⑦存儲過程是資料庫中的一個重要對象,任何一個設計良好的資料庫應用程序都應該用到存儲過程。

2、函數的特點

①函數只有一種參數(IN),只有一條RETURN語句,只能返回單一的值。

②可在SQL語句(DML或SELECT)中調用函數。由於函數可以返回一個表對象,因此它可以在查詢語句中位於FROM關鍵字的後面。

3、觸發器的特點

觸發器是特殊的存儲過程,存儲過程需要程序調用,而觸發器會自動執行。

⑸ oracle 在存儲過程中可以調用觸發器么

oracle 在存儲過程中可以調用觸發器
觸發器之所以叫觸發器就是因為他不能被調用,當然,如果存儲過程中有ddl語句達到了觸發某一個觸發器的條件,觸發器就會被觸發

熱點內容
恩什麼密碼 發布:2024-05-10 15:10:29 瀏覽:200
javappt課件 發布:2024-05-10 14:58:17 瀏覽:688
如何將hadoop編譯在windows 發布:2024-05-10 14:23:36 瀏覽:134
python和php哪個好 發布:2024-05-10 13:32:41 瀏覽:731
android長按關機 發布:2024-05-10 13:21:54 瀏覽:14
城堡模組小本的模組密碼是什麼 發布:2024-05-10 13:21:13 瀏覽:307
舊機照片傳新手機怎麼弄安卓蘋果 發布:2024-05-10 13:16:15 瀏覽:228
設置密碼英文是什麼 發布:2024-05-10 13:15:19 瀏覽:650
魅族安卓60怎麼下載光遇 發布:2024-05-10 13:10:52 瀏覽:841
硬碟存儲系統 發布:2024-05-10 12:39:51 瀏覽:244