ORACLE 썸네일형 리스트형 12-5. 트리거 및 패키지 ■ PL/SQL ※ 트리거 (초보자는 트리거를 손대지 않는 것이 좋다) Ex. 판매 후 재고 수량을 자동으로 줄어들게 만드는 것 : 미리 정해 놓은 특정 조건이 만족하거나 어떤 동작이 수행하면 자동으로 실행하도록 정의한 동작 : 예를 들어 DML(INSERT, UPDATE, DELETE) 문장이 실행되거나 DDL(CREATE, ALTER, DROP) 문장이 실행될 때 트리거가 실행될 수 있다. : 트리거는 CREATE TRIGGER 시스템 권한이 있어야 생성 가능하다. -- 관리자계정(sys) : sky 계정에게 트리거를 만들 수 있는 권한 부여 GRANT CREATE TRIGGER TO sky; -- sky계정 : 시스템 권한 확인 SELECT * FROM user_sys_privs; ---------.. 더보기 12-4. PLSQL 예외처리 ■ PL/SQL ※ 예외처리 ▪︎ 컴파일에러 ▪︎ 런타임에러 ------------------------------------------------------- -- -- 시스템 예외 (오라클이 제공해주는 예외) DECLARE vName VARCHAR2(30); vSal NUMBER; BEGIN -- SELECT name, sal INTO vName, vSal FROM emp WHERE empNo = '1001'; -- SELECT name, sal INTO vName, vSal FROM emp WHERE empNo = '8001'; SELECT name, sal INTO vName, vSal FROM emp; DBMS_OUTPUT.PUT_LINE(vname || ' : ' || vsal); EXCEPT.. 더보기 12-3. 커서와 동적쿼리 ■ PL/SQL ※ 커서(Cursor) 1) 하나의 레코드가 아닌 여러 레코드로 구성된 작업영역에서 SQL문을 실행하고 그 과정에 생긴 정보를 저장하기 위해서 Cursor를 사용한다. 2) 오라클 서버에 의해 실행되는 모든 SQL문은 연관된 각각의 커서를 소유 3) 커서의 종류 ▶︎ 암시적 커서 ▶︎ 명시적 커서 ------------------------------------------------------- -- 암시적 커서 - SQL%ROWCOUNT : 해당 SQL 문에 영향을 받는 행의 수 - SQL%FOUND : 해당 SQL 영향을 받는 행의 수가 1개 이상일 경우 TRUE - SQL%NOTFOUND : 해당 SQL 문에 영향을 받는 행의 수가 없을 경우 TRUE - SQL%ISOPEN : 항상.. 더보기 12-2. 프로시저 ■ PL/SQL ※ 프로시저 : 자주 실행해야 하는 업무 흐름(SQL)을 미리 작성하여 데이터베이스 내에 저장해 두었다가 필요할 때마다 호출하여 실행 : 프로시저는 모두 db에 저장된 객체이므로 저장 프로시저 (스토어드 프로시저) 라고 부르기도 한다. ------------------------------------------------------- -- ▶︎ 이전에 만들었던 테이블은 지우고 다시 새로운 테이블과 시퀀스 만들기 drop table test PURGE; CREATE TABLE test ( num NUMBER PRIMARY KEY, name VARCHAR2(30) NOT NULL, score NUMBER(3) NOT NULL, grade VARCHAR2(10) NOT NULL ); CREAT.. 더보기 12-1. PLSQL 기본 문법 ■ PL/SQL ※ 기본 문법 - PL/SQL : 프로그래밍언어의 특성을 가지는 SQL의 확장 : 데이터 조작과 질의 문장은 PL/SQL의 절차적 코드 안에 포함된다. - PL/SQL 프로그래밍 단위 ㆍPL/SQL 익명 블록 ㆍ함수 ㆍ프로시저 ㆍ패키지 : 패키지 명세, 패키지 바디 ㆍ트리거 ο 기본 문법 ------------------------------------------------------- -- sqlpus : DBMS_OUTPUT 출력 SQL> SET SERVEROUTPUT ON DECLARE vname VARCHAR2(50); vpay NUMBER; BEGIN SELECT name, sal + bonus INTO vname, vpay FROM emp WHERE empNo = '1001';.. 더보기 11. ORCLE 12c부터 변경된 사항 - 페이징처리 ■ 오라클 12C부터 변경된 사항 ※ 12C부터 추가된 새로운 기능 ◎ Top-N 기능 : 반환되는 행수를 제한 할 수 있다 - 중요한 컬럼 ----------------------------------------------- -- -- 처음음 레코드 부터 3개만 출력 SELECT * FROM emp FETCH FIRST 3 ROWS ONLY; -->3개의 데이터만 가져옴 -- 급여 내림차순 정렬하여 처음 레코드 부터 3개만 출력 SELECT * FROM emp ORDER BY sal DESC FETCH FIRST 3 ROWS ONLY; -- 급여 내림차순 청렬하여 2개의 레코드를 건너뛰고 3개만 출력 SELECT * FROM emp ORDER BY sal DESC OFFSET 2 ROWS FETCH F.. 더보기 9-1. 고급쿼리 ■ 고급 쿼리 ※ 계층형 질의(Hierarchical Query) 상하구조 (ex 회사) ο 계층적 쿼리 ------------------------------------------------------- SELECT * FROM soft; -- 상위에서 하위로 출력 : top-down. => 기억해두기 SELECT num, subject, LEVEL, parent. FROM soft START WITH num =1 -- 출력을 시작할 최상위 행 CONNECT BY PRIOR num = parent; -- 계층관계지정 -- PRIOR : 이전 행과 다음 행 연결 -- 나(num)을 부모(parent)로 사용하는행 -- parent : 상위정보를 가진 컬럼 -- LEVEL : 검색된 결과의 계층별로 부여되.. 더보기 9-2. 고급 쿼리 ■ 고급 쿼리 ※ 정규식(Regular Expression) - 주요 함수 1) REGEXP_LIKE(source_char, pattern [, match_parameter ] ) : 패턴이 포함된 문자열 검색 --------------------------------------- -- name에 한, 백자로 시작하는 레코드 SELECT * FROM reg; SELECT * FROM reg WHERE REGEXP_LIKE(name, '^[한백]'); -- name에서 '강산'으로 끝나는 레코드 SELECT * FROM reg WHERE REGEXP_LIKE(name, '[강산]$'); SELECT * FROM reg WHERE REGEXP_LIKE(email, 'com$'); - 대소문자 구분 SELEC.. 더보기 이전 1 2 3 다음