공부/데이터베이스 24

[oracle] 오라클 PL/SQL 예외처리(Exception)

오라클 PL/SQL 예외처리(Exception) 오라클에서 제공하는 예외와 사용자가 정의하는 커스텀 예외가 있다. 커스텀 예외 처리 : 예외 선언 -> 예외 호출 -> 예외 수행 순서로 작성한다. 예제: CREATE OR REPLACE PROCEDURE CUSTOM_PROC( NUM IN NUMBER, OUT_MSG OUT VARCHAR2 ) IS NUM_CHECKER EXCEPTION -- 커스텀 예외 선언 BEGIN IF NUM > 10 THEN -- EXCEPTION 조건 설정 RAISE NUM_CHECKER; -- EXCEPTION 호출 END IF; RAISE NO_DATA_FOUND; EXCEPTION WHEN NUM_CHECKER THEN -- 조건이 맞아 예외가 발생한 경우(RAISE) B..

[oracle] 패키지

패키지 : 프로시저 또는 함수 등 서브 프로그램을 하나로 묶어놓은 객체. 패키지는 컴파일을 거쳐서 실행되며, 다른 패키지를 참조, 실행할 수 있다. 패키지 장점: 모듈화 - 함수와 프로시저 등 서브 프로그램을 한 곳에 모아서 사용할 수 있으므로 관리 및 사용이 수월하다. 캡슐화 - 선언부만 외부에 공개되고, 본문은 감춰져 있기 때문에 접근을 제어하여 오용을 방지한다. 성능 - 패키지의 서브 프로그램 호출 시 패키지 전체가 메모리에 올라가 호출 시 더 나은 성능을 보인다. 패키지 선언부(package definition): 어떤 함수 또는 프로시저가 있는지 정의한다. 함수 또는 프로시저의 이름, 매개변수, 반환 타입 등을 작성한다. 세부 사항은 패키지 본문(package body)에서 작성한다. CREAT..

[oracle] 프로시저, 함수

오라클 프로시저, 함수 프로시저(procedure): 어떤 업무를 수행하기 위한 절차 프로시저 문법: CREATE OR REPLACE PROCEDURE 프로시저 이름 ( 매개변수명1 [ IN || OUT || INOUT ] 데이터타입, 매개변수명2 [ IN || OUT || INOUT ] 데이터타입 ... ) IS||AS 변수, 상수 등 선언 ( 선언부 ) BEGIN 실행 문장 ( 실행부 ) EXCEPTION 문장 --필수아님 END ; 프로시저 예제: 사번을 입력받아 급여를 인상하는 update_sal 프로시저 CREATE OR REPLACE PROCEDURE update_sal ( v_empno IN NUMBER ) IS BEGIN UPDATE emp SET sal = sal * 1.1 WHERE e..

[ORACLE] 시퀀스

오라클 시퀀스(sequence) : 자동으로 순차적으로 증가하는 순번을 반환하는 데이터베이스 객체이다. 새로운 ROW가 추가될 때 가장 큰 값에 1을 더하는 로직을 어딘가 추가해야하지만 시퀀스를 사용하면 이러한 로직이 필요 없다. 시퀀스가 필요한 이유 : 매번 최대 글번호를 확인하고 그 값보다 1 큰 값을 계산해 새로운 글 번호를 INSERT하려 하는경우에, 글 번호 column에 index가 생성되어 있다면 index_desc 등의 힌트로 쿼리의 속도 자체는 얼마 안 나올 수 있지만, 실제 서비스를 운영할 때는 이러한 쿼리를 한 번 실행한다는게 DISK IO를 계속 발생시키고 DB CONNECTION POOL을 한 개라도 더 사용하기 때문에 부담이 된다. 따라서 SEQUENCE 오브젝트로 값을 바로 I..

[데이터베이스] 오라클 CASE WHEN 표현식

If 문 방식 SELECT ename , deptno , CASE WHEN deptno = '10' THEN 'New York' WHEN deptno = '20' THEN 'Dallas' ELSE 'Unknown' END AS loc_name FROM emp WHERE job = 'MANAGER' CASE 표현식에서 ELSE 부분은 생략이 가능하며, 만족하는 조건이 없으면 NULL을 리턴한다. CASE 표현식은 SELECT 절, WHERE 절, PL/SQL 등 많은 부분에서 사용이 가능하다. Switch 문 방식 SELECT ename , deptno , CASE deptno WHEN 10 THEN 'New York' WHEN 20 THEN 'Dallas' ELSE 'Unknown' END AS loc_..

[데이터베이스] mysql에서 text와 varchar의 차이

char만 fixed length type(고정길이)이고, text와 varchar는 variable length data type(가변길이)입니다. 아래 레퍼런스 글을 바탕으로 정리해보자면, text와 varchar는 max size limit을 정할 수 있는가 text: 없다, 무조건 65535 varchar: 있다. 1 ~ 65535 저장된 character 외의 현재 저장하고 있는 string의 사이즈를 저장하는데 1~2 byte를 더 쓴다 text: 무조건 2 byte varchar: x