2
Oracle 용 의사 버전 제어 및 저장소를 구현하려고합니다. 아이디어는 다음과 같습니다 : 저장된 함수/프로 시저가 변경되거나 생성 된 전역 DATABASE 트리거가 실행되면 수정 된 개체의 현재 소스를 가져 와서 을 테이블에 저장합니다. 그래서 나는 두 개의 트리거를 사용하고 다음 AFTER_MODIFY 트리거가 컴파일 된 객체의 이전 버전 (소스)보고를 제외하고오라클 AFTER/BEFORE CREATE ON DATABASE 트리거 : 객체 소스에 액세스하는 방법
TRIGGER BEFORE_MODIFY before ALTER or CREATE ON DATABASE
TRIGGER AFTER_MODIFY after ALTER or CREATE ON DATABASE
모든 것이 잘 작동합니다. 나는 소스를 SYS.SOURCE$.SOURCE
에서 얻으려고 시도했으며, 두 번째 시도는 dbms_metadata.get_ddl(OBJ_TYPE, OBJ_NAME, OBJ_OWNER)
에서 같은 결과를 얻으려고합니다.
"Oracle 10g +에서는 할 수 없습니다."와 같은 조언이나 확실한 답변을 찾고 있습니다.
create or replace TRIGGER AFTER_MODIFY after CREATE ON hr.SCHEMA
declare
sql_text ora_name_list_t;
n number;
begin
n := ora_sql_txt(sql_text);
FOR i IN 1..n LOOP
dbms_output.put_line(sql_text(i));
END LOOP;
end;
/
감사 게리, 나에게 도움 잘 작동 : – Dimus