oracle儲存過程和觸發器

2021-07-12 03:43:40 字數 1493 閱讀 3121

--過程

建立過程,create procedure語句可以用於建立過程,簡化語法如下:

create [or replace] procedure procedure_name

[(parameter_name [in|out|in out] type [,...])]

begin

procedure_body

end parameter_name;

其中,or replace說明如果該過程已經存在,則用新的過程代替它。該選項可以用來修改乙個現有過程;in|out|in out定義了引數的模式。in為預設的模式。type指定引數的型別。 procedure_body包含執行過程任務的sql和pl/sql語句。

--建立乙個過程,給某個教師加工資

create or replace

procedure update_t_sal(t_tno in t.tno%type, t_num in number)

ast_count_id integer;

begin

select count(*) into t_count_id from t

where t_tno=tno;

if t_count_id = 1 then

update t

set sal=sal+t_num

where t_tno=tno;

commit;

end if;

exception

when others then

rollback;

end update_t_sal;

--過程的呼叫

call update_t_sal('t1', 100);

--刪除過程

drop procedure update_t_sal;

--觸發器

觸發器(trigger)是當特定的sql dml語句,如insert,update或delete語句在特定的資料庫表上執行時,由資料庫自動執行(或者用技術來講是自動啟用)的過程。觸發器對於實現表中某個列值的高階變更審計等功能非常有用。簡化語法如下:

create [or replace] trigger trigger_name

trigger_event

on table_name

[for each row [when trigger_condition]]

begin

trigger_body

end trigger_name

其中,for each row指定觸發器是乙個行級觸發器,即當觸發器啟用時,trigger_body中包含的**會為每一行執行一次,如果for each row沒有,則觸發器是乙個語句級觸發器,即不管所作用的行有多少,當觸發器啟用時,trigger_body中包含的語句只執行一次。befor指定觸發器在觸發事件執行之前啟用,after是定觸發器在觸發事件執行之後啟用,instead of指定用觸發器啟用代替觸發事件的執行。

oracle觸發器和儲存過程

一 觸發器分為行級觸發和語句級觸發器,for each now 行級觸發起 基本語法為 create or replace trigger tri name before insert on table name for each now begin select sysdate into new....

儲存過程和觸發器

儲存過程 stored procedure 是在大型資料庫系統中,一組為了完成特定功能的sql 語句集,經編譯後儲存在資料庫中,使用者通過指定儲存過程的名字並給出引數 如果該儲存過程帶有引數 來執行它。簡單的敘述 在大型資料庫系統中,儲存過程和觸發器具有很重要的作用。無論是儲存過程還是觸發器,都是s...

儲存過程和觸發器

1 什麼是儲存過程呢?定義 將常用的或很複雜的工作,預先用sql語句寫好並用乙個指定的名稱儲存起來,那麼以後要叫資料庫提供與已定義好的儲存過程的功能相同的服務時,只需呼叫execute,即可自動完成命令。講到這裡,可能有人要問 這麼說儲存過程就是一堆sql語句而已啊?microsoft公司為什麼還要...