我有oracle數據庫11gR2,我想用塊自動創建一些觸發器。 當我想在下面運行查詢時,我有一個錯誤。如何在oracle中創建觸發器?
我的塊是:
declare
tablesid number ;
tablenames varchar2(4000);
cursor c1 is
select id , title from hr.tables;
begin
open c1;
loop
fetch c1 into tablesid , tablenames;
CREATE OR REPLACE TRIGGER tablenames||'_before_insert'
before insert
on hr.tablenames
DECLARE
columnid number ;
columnval number ;
columntitle varchar(4000);
cursor c2 is
select id from hr.columns where tableid = tablesid ;
BEGIN
-- open c2 ;
for rec in c2 loop
select title into columntitle from hr.columns where id = rec.id
insert into hr.rowaction(columnid,newvalue,oldvalue,actiondate)
(
select id ,:new.columntitle,:old.columntitle,sysdate
from hr.tabletiltes
where id = rec.id
)
select title into columntitle from hr.columns where id = rec.id;
dbms_output.put_line(columntitle);
end loop;
end;
end loop ;close c1; end;
ORA-06550:線11,第6欄: PLS-00103:出現符號 「CREATE」 在需要下列之一時: (開始的情況下聲明最終退出了轉到如果環模空 編譯提高收益選擇更新而與 < < 繼續關閉當前刪除獲取鎖芯打開回滾 保存點設置SQL執行提交FORALL合流管清洗 06550. 00000 - 「行%s,列%s:\ n%s」 *原因:通常是PL/SQL編譯錯誤。 *操作: 綁定變量「新」未聲明 匿名塊完成 綁定變量「新」未聲明 匿名塊完成
由於
從評論中,saeed.sh詢問了一個構建觸發器的過程,該過程將在數據庫的每個表發生更改時保存數據。這是一個大問題。 –