ORACLE2009. 11. 11. 21:30

--emp_process 프로시져 만들고
--SQL> set serveroutput on
--SQL> exec emp_process

--emp_process2 프로시져 만들고 (부서별 조회)
--SQL> exec emp_process2

--emp_process3 프로시져를 만들고 (업데이트)
--SQL> exec emp_process3

--test4,test5,
--페키지 emp_comm

--dbms_job 패키지
--일정 시간 간격으로 DB작업을 수행
--1. submit : 새로운 job를 등록하는 프로시져
--2. run : 등록된 job을 실행하는 프로시져
--3. remove : 등록된 job을 제거하는 프로시져

create table job_table(
seq number(5),
job_date date
);
--프로시저 만들기 JOB_TEST
--SQL> var job number;
--SQL> exec dbms_job.submit(:job,'job_test;' , sysdate, 'sysdate+10/36000';
--SQL> exec dbms_job.run(:job);
--SQL> exec dbms_job.remove(:job);

--트리거(Trigger)
--테이블의 변경을 자동 감지해서 다른 테이블을 작업을 수행
--예를 들어 게시물이 등록되면 게시물테이블에 데이터가 입력되고,
--게시물카운트테이블에도 데이터가 입력되게 하겠다.
--로깅, 보안, 감사에 많이 쓰임

--트리거의 구성요소
--1.트리거의 유형
--1)문장레벨의 트리거 : 테이블에 update, insert, delete가 일어나면
--   단한번만 트리거를 발생시킴(트리거의 수 = 1)
--2)행레벨의 트리거 : 테이블에 update,insert,delete가 일어나면
--   모든행에 대해 트리거를 발생시킴(트리거의 수 = 행의 수)
--2. 트리거의 타이밍
--1) before : 테이블에 update, insert, delete 가 일어나기 전
--2) after : 테이블에 update, insert, delete 가 일어난 후
--3. 트리거의 이벤트
--1) update
--2) insert
--3) delete
--test1_trigger
--sql)update emp set sal = sal * 1.0;

create table dept_same (
deptno number(2),
dname varchar2(14),
loc varchar2(10),
o_deptno number(2),
o_dname varchar2(14),
o_loc varchar2(10),
gubun varchar2(10),
chk date
);

--test2_trigger 생성
--SQL> insert into dept values(99,'CCC','SEOUL');
--update dept set loc = 'busan' where deptno=99;
--delete from dept where deptno=99;

--트리거의 상태 변경
--1. 트리거 활성화/비활성화
--alter tirgger 트리거 이름 enable
--alter tirgger 트리거 이름 disable
--2. 테이블에 관련된 모든 트리들을 활성화/비활성화
--alter table 테이블명 enable all triggers;
--alter table 테이블명 disable all triggers;
--3. 트리거 재컴파일
--all trigger 트리거명 compile;
--4. 트리거 제거
--drop trigger 트리거명;

--데이터 사전
--사용자의 객체 정보 : user_objects
select object_name, object_id, object_type, created, timestamp, status
from user_objects;
select object_name from user_objects where object_type='PROCEDURE';

-- 소스코드 : user_source
select name, type, line, text
from user_source where name='TAX';
select name, type, line, text
from  user_source where name='TEST5';

-- 사용자의 에러 정보 : user_errors
select * from user_errors;

--사용자의 트리거 정보 : user_triggers
select trigger_name, trigger_type, triggering_event, table_name, status from

user_triggers;

--사용자 객체들의 상호참조 정보 : user_dependencies
select * from user_dependencies where referenced_name = 'EMP';
--사용자의 테이블 정보
select * from user_tables;

--사용자의 뷰 정보
select * from user_views;

--사용자 인덱스 정보
select * from user_indexes;

--사용자의 제약조건 정보
select * from user_constraints;

--바인드 관련 자료
--http://blog.naver.com/nkmin80?Redirect=Log&logNo=140032147


Posted by Tiwaz