問:
這**中的冒號(:)是什麼意思呢?
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...