728x90
반응형
SMALL

Data Base/PL SQL 22

231108 PL/SQL 독립 트랜잭션(Autonomous Transaction), 문맥전환(SQL엔진, PL/SQL 엔)

■ 독립 트랜잭션(Autonomous Transaction) (8i, 9iR2) 동시에 진행 - PRAGMA autonomous_transaction 지시어를 선언부분에 작성하면 독립트랜잭션이 수행된다. - 독립트랜잭션은 시작 트랜잭션의 결과의 영향을 주지 않으면서 변경 사항에 대해서 COMMIT, ROLLBACK 할 수 있다. CREATE TABLE test(name char(10)); CREATE OR REPLACE PROCEDURE p2 IS BEGIN INSERT INTO test(name) VALUES('두번째'); -- 트랜잭션 진행중2 COMMIT; -- 트랜잭션 진행완료. -- 트랜잭션이 이루어지기땜에 독립적으로 사용해야 하면 주의해서 사용해야 한다 END p2; / CREATE OR RE..

Data Base/PL SQL 2023.11.08

231107 PL/SQL DML TRIGGER, DML ROW TRIGGER

영향을 받은 행이 전혀 없더라도 무조건 한 번 수행되는 트리거 # test table 생성 CREATE TABLE hr.emp AS SELECT employee_id id, last_name name, salary sal, department_id dept_id FROM hr.employees; CREATE OR REPLACE TRIGGER secure_emp BEFORE --타이밍 설정(필수) -- DML 중 하나는 필수적으로 작성 INSERT OR DELETE OR UPDATE ON hr.emp BEGIN IF to_char(sysdate, 'dy') IN ('월', '화') OR to_char(sysdate, 'hh24:mi') BETWEEN '09:30' AND '10:00' THEN -- TRU..

Data Base/PL SQL 2023.11.07

231106 PL/SQL TRIGGER, FOR EACH ROW(행트리거),조건부술어

■ TRIGGER (트리거) ex) 로그정보, 검색 - 트리거는 데이터베이스에 저장되고 지정된 이벤트에 대한 응답으로 실행되는 PL/SQL 블록이다. - 오라클 데이터베이스는 지정된 조건이 발생할때 트리거를 자동으로 실행한다. - 트리거는 테이블, 뷰, 스키마(소유자), 데이터베이스(모든 유저)에 정의할 수 있다. - CREATE TRIGGER 시스템 권한 필요하다. 익명블록구조이다. # 트리거 유형 ex) 대차대조표 - 특정 테이블, 뷰에 INSERT, UPDATE, DELETE 문 - CREATE, ALTER, DROP 문 - 데이터베이스 시작 또는 종료 - 특정 오류 메시지 또는 임의의 오류 메시지 - 유저 로그인, 로그오프 ; # 트리거 권한 확인 = 'CREATE TRIGGER' SELECT *..

Data Base/PL SQL 2023.11.06

231106 PL/SQL PACKAGE 선언, 지시어, 표준화, PRAGMA

□ 패키지 안에 생성된 명시적 커서 지속상태 -- 필수: 패키지 선언 CREATE OR REPLACE PACKAGE pack_cursor IS PROCEDURE open; PROCEDURE next(p_num IN NUMBER); PROCEDURE close; END pack_cursor; / SPEC 먼저 선언 SELECT * FROM user_source WHERE name = 'PACK_CURSOR'; SELECT * FROM user_objects WHERE object_name = 'PACK_CURSOR'; PACKAGE BODY : 옵션 CREATE OR REPLACE PACKAGE BODY pack_cursor IS /* 패키지 body 변수 private cursor : pack body ..

Data Base/PL SQL 2023.11.06

231103 PL/SQL PACKAGE, package overloading

■ PACKAGE : 관련성있는 서브프로그램(프로시저, 함수), 변수, DATA TYPE(레코드타입, 데이터타입 등)을 모아놓은 프로그램 - 권한 : CREATE PROCEDURE 1. 글로벌 변수를 선언(표현)해야 할때 2. exception 표준화해야 할때 3. 오버로딩 해야 할때 : 형변화( ex) to_char ) 4. 연관있는프로그램 + 유지관리 # SPEC(필수, 상수:글로벌변수, exception 선언) + BODY(옵션) 1) SPEC(PUBLIC) --OPEN된 소스 + cmd에서도 적용, 선언만(header 부분만) -- BEGIN 절 필수가 아니다. CREATE OR REPLACE PACKAGE comm_pkg --생성자 IS g_comm NUMBER := 0.1; --글로벌 변수 선..

Data Base/PL SQL 2023.11.06

231103 PL/SQL 함수의 부작용, LOCAL SUBPROGRAM

■ 함수의 부작용 - 동일한 TABLE 에 대해서 SELECT, DML 을 수행할 수 없다. CREATE OR REPLACE FUNCTION query_call ( --단일행함수 p_id IN NUMBER ) RETURN NUMBER IS v_sal NUMBER; v_year NUMBER; BEGIN SELECT salary, trunc(months_between(sysdate, hire_date)/12) INTO v_sal, v_year FROM hr.employees WHERE employee_id = p_id ; IF v_year >= 20 THEN RETURN v_sal*1.2; ELSIF v_year =17 THEN RETURN v_sal*1.1; ELSE RETU..

Data Base/PL SQL 2023.11.06

231102 PL/SQL 함수(FUNCTION)

■ 함수(function) - 함수는 값을 반환할 수 있는 이름이 있는 PL/SQL 블록이다. - 함수는 값을 계산 할 때 많이 사용하는 서브 프로그램이다. # 프로시저 생성 CREATE OR REPLACE PROCEDURE get_sal ( p_id IN NUMBER, p_sal OUT NUMBER ) IS BEGIN SELECT salary INTO p_sal FROM hr.employees WHERE employee_id = p_id; EXCEPTION WHEN NO_DATA_FOUND THEN NULL; END get_sal; / # 프로시저 호출 DECLARE v_sal NUMBER; BEGIN get_sal(100, v_sal); --프로시저 호출 dbms_output.put_line(v_sa..

Data Base/PL SQL 2023.11.02
728x90
반응형
LIST