Orcale觸發器中的冒號,new和old

2021-06-16 09:57:21 字數 1623 閱讀 9563

問:

這**中的冒號(:)是什麼意思呢?

variable x refcursor

exec authors_sel(:x)

print x 答:

x 是乙個主變數

主變數是乙個宣告在主環境中的變數,它會被傳遞到乙個或多個pl/sql程式中,

在程式中可以跟其他的變數一樣使用。

sql*plus和pl/sql都能引用主變數,sql*plus還可以顯示主變數的值。

但是,在pl/sql中引用主變數的時候,我們必須加上冒號(:)字首

:x表示引用sqlplus中定義的變數

觸發器 new 和 old 修飾符

²old和new修飾符只用於記錄級觸發器。

²在sql和pl/sql語句中,old和new前面要加「

:」。²在when限制語句中,old和new前面

不要加「

:」,因為when子句在pl/sql塊的外部。

²注意:如果對大表做大量dml操作,記錄級觸發器會影響資料庫效能。

²注意:記錄級觸發器中,不能從正在被修改的表中讀取資料。

例子:create  or  replace  trigger  derive_commission_pct

before  insert  or  update  of  sal  on  emp

for  each  row

when  (new.job = 'salesman')

begin

if  inserting

then  :new.comm :=0;

elsif  :old.comm is  null

then  :new.comm := 0;

else  :new.comm := :old.comm  * 1.05;

end  if;

end;

/create

orreplace

triggertri_printtest  

before 

delete

orinsert

orupdate

ontest_exam  

--觸發事件 

foreach row                  

-- 每修改一行都需要呼叫此過程 

begin

dbms_output.put_line(:new.idnew); 

--idnew欄位更新後的值 

dbms_output.put_line(:old.idnew); 

--idnew欄位更新前的值 

end;  

原idnew欄位是1時,

使用update test_exam set idnew=5 where sn='5454';

則列印結果為:51

Orcale序列 觸發器

序列 重點 i.語法 create sequence序列名 引數 ii.詳解 用來生成一列自動增長的值。create sequence seq class minvalue 值 最小值 maxvalue 值 最大值 start with 起始值 increment by 值 遞增數 cache 快取...

orcale 觸發器實現級聯刪除

請在資料庫中新增兩個觸發器 1 刪除表staff userinfo中的使用者時,同時刪除staff userrole中使用者對應的角色 2 刪除表staff role中的角色時,同時刪除staff rolemodule中角色對應的模組。錯誤 1.create or replace trigger d...

Orcale資料庫觸發器

什麼是觸發器 是乙個特殊的儲存過程 是完成乙個特定功能的乙個程式 是乙個與表相關聯的,儲存的plsql程式 每當乙個特定的資料操作語句 insert update delete在指定的表 上觸發時,orcale自動執行觸發器中定義的語句序列 語法create trigger x after inse...