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 다음 중 하나를 기대 때 발생하는 심볼이 '만들기 " (케이스 선언 시작 고토에 대한 최종 종료하면 루프 모드 널 프라그 인상 리턴 업데이트를 선택 < < 가까운 현재 삭제 가져 잠금 삽입 개방 롤백 세이브 포인트 세트 FORALL 파이프 퍼지병합 커밋 SQL 실행 계속 함께하면서06550. 00000 - "행 % s, 열 % s : \ n % s" * 원인 : 일반적으로 PL/SQL 컴파일 오류입니다. * 작업 : 바인드 변수 "새로운"선언되지 익명 블록은 바인드 변수 "새로운"선언되지 익명 블록은 트리거 코드의 독립 별도의 조각
감사
의견에서 saeed.sh는 데이터베이스의 모든 테이블에 대해 변경 될 때 데이터를 저장할 트리거를 작성하는 절차를 요청했습니다. 이것은 큰 해결책입니다. –