책소개
오라클 PL/SQL 프로그래밍 철저 해부!높은 생산성을 내기 위한 프로그래머의 필수 선택, PL/SQL!흔히 오라클 하면 SQL만을 떠올리지만, 이 SQL만으로는 부족하다 느껴질 때가 많지 않은가? 바로 이런 아쉬움을 메울 수 있는 수준 높지만 읽기 쉽고, 친절하나 결코 가볍지 않은, 세심하고 꼼꼼한 PL/SQL 책이 출간되었다!개발자로 오랫동안 일해 온 저자가 개발자 관점에서 DB 응용프로그램을 개발하는 데 필요한 주제를 폭넓게 다루었고, 입문부터 중급 수준까지의 독자를 모두 아우를 수 있도록 꼭 필요한 내용들만 수록하여 어느 정도 수준에 이를 때까지 여러분들이 필요로 할 PL/SQL의 다양한 기술들을 습득하기에 이 한 권으로 충분할 것이다. SQL만 잘 아는 프로그래머보다는 PL/SQL까지도 잘 아는 프로그래머가 훨씬 더 높은 생산성을 낼 수 있다. SQL로 구현하기 어렵거나 불가능한 것들을 PL/SQL로 능숙하게 구현할 수 있게 된다면, 여러분은 최고의 생산성을 내는 유능한 프로그래머가 될 수 있을 것이다. 이 책과 더불어 한 단계 더 수준 높은 프로그래머로 거듭날 기회를 잡아라!
목차
PART I PL/SQL 시작하기 1CHAPTER 1 예제로 시작하기 31.1 오라클 scott 예제 스키마 31.2 예제 프로그램 61.2.1 익명 PL/SQL 예제 61.2.2 저장 함수 예제 121.2.3 저장 프로시저 예제 15CHAPTER 2 PL/SQL 개요 202.1 PL/SQL의 개념 212.2 PL/SQL의 주요 특징 222.3 PL/SQL과 SQL의 비교 252.4 PL/SQL로 쉽게 할 수 있는 것들과 하기 어려운 것들 272.4.1 쉽게 할 수 있는 것들 272.4.2 하기 어려운 것들 282.5 PL/SQL의 작성과 실행 절차 282.6 PL/SQL의 실행 구조 29CHAPTER 3 PL/SQL 프로그래밍 준비하기 313.1 오라클의 세 가지 에디션 313.2 오라클 데이터베이스 설치 323.2.1 사용할 오라클 버전의 선택 323.2.2 오라클 데이터베이스 설치 절차 323.2.3 오라클 버전 12c 사용 시의 주의사항 343.3 PL/SQL 실행 환경 363.4 SQL*Plus 설정 38PART II PL/SQL의 기초 39CHAPTER 4 PL/SQL 프로그램의 기본 구조 414.1 블록 구조 414.2 문장 444.3 주석 454.4 저장 서브프로그램과 익명 PL/SQL 46CHAPTER 5 구분자와 식별자 485.1 구분자 485.2 식별자 505.2.1 일반 사용자 정의 식별자 535.2.2 큰따옴표를 사용한 사용자 정의 식별자 545.3 식별자의 유효 범위 55CHAPTER 6 데이터 타입 596.1 문자형 데이터 타입 606.2 수치형 SQL 데이터 타입 636.3 LONG과 LONG RAW 데이터 타입 656.4 PL/SQL 전용 데이터 타입 656.4.1 PL/SQL 전용 수치형 데이터 타입 656.4.2 BOOLEAN 데이터 타입 666.5 사용자 정의 서브타입 696.6 객체 타입 706.7 오라클 내장 데이터 타입의 최대 크기 차이 706.8 앵커(%)를 사용한 데이터 타입 지정 716.8.1 %TYPE 716.8.2 %ROWTYPE 726.9 스칼라 데이터 타입과 컴포지트 데이터 타입 73CHAPTER 7 변수와 상수 그리고 리터럴 757.1 변수 757.2 상수 787.3 리터럴 797.3.1 문자형 리터럴 817.3.2 수치형 리터럴 847.3.3 날짜형 리터럴 86CHAPTER 8 표현식 898.1 연산자와 피연산자 898.2 연산자 우선순위 908.3 연산자의 기능 설명 918.4 연산자의 종류 918.4.1 산술 연산자 928.4.2 논리 연산자 928.4.3 Short-Circuit Evaluation 948.4.4 연결 연산자 958.4.5 비교 연산자 958.4.6 BOOLEAN 표현식 1018.4.7 CASE 표현식 1028.5 PL/SQL에서 내장 SQL 함수의 사용 105CHAPTER 9 SQL 실행 1079.1 SELECT문의 사용 1079.1.1 기본 사용법 1079.1.2 PL/SQL 입력 변수의 사용 1089.2 INSERT문의 사용 1119.3 UPDATE문의 사용 1139.4 MERGE문의 사용 1159.5 DELETE문의 사용 1179.6 시퀀스 사용 1179.7 DML문의 결괏값을 PL/SQL 변수로 반환하는 방법 1189.8 트랜잭션 제어 1209.8.1 COMMIT 1219.8.2 묵시적 COMMIT 1229.8.3 ROLLBACK 1239.8.4 SAVEPOINT 1249.8.5 묵시적 ROLLBACK 1269.8.6 SET TRANSACTION 1289.9 CLOB 사용하기 129PART III 절차형 데이터베이스 언어로서의 PL/SQL 133CHAPTER 10 제어문 13510.1 제어문의 종류 13510.2 조건 분기문 13610.2.1 IF문 13610.2.2 CASE문 13810.3 무조건 분기문 14410.4 레이블 14610.5 순환문 14910.5.1 기본 LOOP문 14910.5.2 탈출문 15010.5.3 WHILE LOOP문 15110.5.4 FOR LOOP문 15210.5.5 LOOP문 내에서의 흐름 변경 15610.6 제어 구조의 중첩 157CHAPTER 11 컬렉션 16011.1 컬렉션 타입의 종류 16111.2 Associative Array 16311.3 VARRAY(Variable-Size Array) 16711.4 Nested Table 17011.5 컬렉션 생성자 17411.6 컬렉션 연산 17511.6.1 컬렉션 변수 간의 할당 17511.6.2 컬렉션 비교 17711.6.3 컬렉션 메소드 17811.7 다차원 컬렉션 18011.8 배열 처리 18011.8.1 SELECT문에서의 배열 처리 18111.8.2 DML문에서의 배열 처리 18511.8.3 FORALL문과 예외 처리 188CHAPTER 12 레코드 19112.1 레코드 사용 19112.2 레코드를 SQL에 사용하기 19312.3 레코드 변수에 값 할당 19712.4 레코드와 컬렉션의 혼합 19912.5 레코드를 SELECT, INSERT, UPDATE문에 사용할 때의 제약 사항 200CHAPTER 13 커서 20113.1 묵시적 커서와 명시적 커서 20213.1.1 묵시적 커서 20313.1.2 명시적 커서 20313.2 커서 FOR LOOP 20813.2.1 묵시적 커서 FOR LOOP 20913.2.2 명시적 커서 FOR LOOP 21113.3 커서 속성 21113.3.1 명시적 커서 속성 21213.3.2 묵시적 커서 속성 21413.4 커서 칼럼의 앨리어스 사용 21513.5 커서 매개변수 21613.6 커서 변수(REF CURSOR) 21713.7 SELECT FOR UPDATE 222CHAPTER 14 동적 SQL 22514.1 EXECUTE IMMEDIATE문을 사용하는 방법 22714.1.1 쿼리 결과를 변수에 저장 22814.1.2 바인드 변수의 사용 22814.1.3 바인드 변수의 모드 22914.1.4 바인드 변수 플레이스 홀더의 이름과 순서 23014.2 커서 변수를 사용하는 방법 23214.3 DBMS_SQL 내장 패키지를 사용하는 방법 23314.4 동적 PL/SQL 238CHAPTER 15 예외 처리 24015.1 예외 처리 방법 24015.2 예외의 이름 24315.2.1 표준 예외명 24315.2.2 사용자 정의 예외명 25015.3 사용자가 예외를 발생시키기 25115.3.1 RAISE문 사용 25115.3.2 RAISE_APPLICATION_ERROR 25215.4 예외를 특정 오류 번호와 연결하기 25515.5 예외의 전파 25615.6 예외 처리기에서의 오류 조회 함수 25715.6.1 FORMAT_ERROR_BACKTRACE 25815.6.2 FORMAT_ERROR_STACK 25815.6.3 FORMAT_CALL_STACK 25915.7 예외 처리에서 주로 하는 작업 26115.7.1 트랜잭션 마무리 26115.7.2 변수나 반환값 지정 26215.7.3 디버깅 정보 출력 26315.7.4 오류 무시 265PART IV 저장 서브프로그램 267CHAPTER 16 저장 서브프로그램 개요 26916.1 저장 서브프로그램을 사용하는 이유 26916.2 저장 서브프로그램의 종류 27016.3 프로그램을 서버에 저장하고 공유하기 27116.4 저장 서브프로그램의 컴파일과 실행 방법 27216.4.1 컴파일하기 27316.4.2 컴파일 오류 조회 27416.4.3 저장 서브프로그램 실행하기 27616.5 서버에 저장되지 않는 서브프로그램 279CHAPTER 17 저장 함수 28217.1 함수의 기본 구조 28217.2 함수의 매개변수 28417.3 함수의 선언부 28517.4 함수의 반환값 28617.5 저장 함수의 사용 28917.6 저장 함수 사용의 제약 사항 289CHAPTER 18 저장 프로시저 29118.1 프로시저의 매개변수 29318.2 프로시저의 선언부 29318.3 저장 프로시저의 사용 293CHAPTER 19 패키지 29419.1 패키지 구조 29419.2 패키지 변수 29819.3 패키지 서브프로그램 30419.4 패키지 커서 30619.5 SERIALLY_REUSABLE 패키지 308CHAPTER 20 서브프로그램의 다양한 기능들 31120.1 매개변수 31120.1.1 매개변수의 선언과 사용 31120.1.2 IN/OUT 매개변수 31220.1.3 매개변수의 기본값 31420.1.4 매개변수의 값 지정 방법: 위치에 의한 지정과 이름에 의한 지정 31520.1.5 OUT 매개변수 변경의 원자성 보장 31620.1.6 매개변수의 전달 방식: 값에 의한 호출과 참조에 의한 호출 31820.1.7 NOCOPY 매개변수 31920.2 재귀 호출 32120.3 서브프로그램 정의의 중첩 32120.4 중복 정의 32320.4.1 중복 정의의 사용 32320.4.2 중복 정의의 제약 32720.5 전방 선언 32820.6 자치 트랜잭션 32920.7 함수 속성 DETERMINISTIC, PARALLEL_ENABLE, RESULT_CACHE 33220.7.1 DETERMINISTIC 33320.7.2 PARALLEL_ENABLE 33320.7.3 RESULT_CACHE 33420.8 권한 모델: 정의자 권한과 실행자 권한 33420.8.1 정의자 권한 33720.8.2 실행자 권한 33820.8.3 ROLE을 통해 부여 받은 권한: SQL은 실행되는데 서브프로그램에 포함시키면 오류 발생 340CHAPTER 21 트리거 34421.1 트리거의 종류 34521.2 DML 트리거의 구조 34621.3 트리거의 호출 순서 34921.4 트리거의 제약 사항 350CHAPTER 22 객체 타입 35222.1 객체 타입 개념 35222.2 객체 타입 속성 35522.3 객체 타입의 메소드 35522.3.1 멤버 메소드 35622.3.2 정적 메소드 36222.3.3 생성자 메소드 36322.4 객체 타입의 상속 36922.5 메소드의 재정의 37022.6 메소드의 중복 정의 37322.7 REF 데이터 타입 37422.8 객체를 테이블에 저장하는 방법 37922.9 슈퍼타입과 서브타입 간의 변환 38122.10 객체 타입의 진화 38422.10.1 메소드의 추가 또는 삭제 38522.10.2 속성의 추가, 삭제, 변경 38622.10.3 타입의 FINAL과 NOT FINAL의 변경 387CHAPTER 23 저장 서브프로그램 관리 38823.1 변경과 삭제 38823.2 딕셔너리에서 저장 서브프로그램 조회하기 38923.3 저장 서브프로그램 권한 관리 391CHAPTER 24 외부 프로그램에서 저장 서브프로그램 호출 39424.1 자바 프로그램에서 저장 서브프로그램 호출 39524.1.1 자바에서 저장 함수 호출 39624.1.2 자바에서 저장 프로시저 호출 39824.2 C# 프로그램에서 저장 서브프로그램 호출 40124.2.1 C#에서 오라클을 사용하기 위한 준비 40224.2.2 C#에서 저장 함수 호출 40524.2.3 C#에서 저장 프로시저 호출 409CHAPTER 25 자바 저장 프로시저 41225.1 자바 저장 프로시저의 작성 방법과 절차 41325.1.1 자바 클래스 파일을 DB에 로드 41525.1.2 자바 소스 파일을 DB에 로드 41725.1.3 자바 소스를 DB에 직접 생성 41825.2 오라클의 SQL 데이터 타입과 자바 타입 간의 매핑 41925.3 자바 저장 프로시저에서 자신을 실행한 오라클에 접속하기 42125.4 오라클에서 지원하지 않는 기능을 자바로 구현하기 426