장바구니 담기 close

장바구니에 상품을 담았습니다.

불친절한 PL/SQL 프로그래밍

불친절한 PL/SQL 프로그래밍

  • 정희락
  • |
  • 디비안(주)(DBian)
  • |
  • 2021-04-12 출간
  • |
  • 912페이지
  • |
  • 188 X 245 mm
  • |
  • ISBN 9791196395780
판매가

40,000원

즉시할인가

36,000

배송비

무료배송

(제주/도서산간 배송 추가비용:3,000원)

수량
+ -
총주문금액
36,000

※ 스프링제본 상품은 반품/교환/환불이 불가능하므로 신중하게 선택하여 주시기 바랍니다.

출판사서평




"불친절한 PL/SQL 프로그래밍"은 "불친절한 SQL 프로그래밍"에 이은 두 번째 오라클 프로그래밍 바이블 시리즈다. 전작과 마찬가지로 기본 개념에서 고급 기능까지 오라클 PL/SQL의 거의 모든 내용을 다루고 있다.

이 책은 총 4부로 구성되어 있다. 내용의 난이도와 연관성에 따라 1부 기본 개념, 2부 기초 문법, 3부 저장 유닛, 4부 고급 기능으로 내용을 구성했다. 부에 속한 장은 기능에 따라 순서를 배열했다. 장에서 다루기 어려운 내용은 부록에 수록했다. 찾아보기는 편의성을 위해 용어, 문법, 제공 패키지로 구분하여 정리했다.

1부 기본 개념
개요, 구성 요소, 선언, 데이터 타입, 표현식, 제어문에 대한 내용을 수록하고 있다. 1부는 이후 내용을 위한 개론이다. 내용을 충분히 숙지해야 다음 과정을 진행할 수 있다. 특히 1장의 PL/SQL 블록 구조는 반드시 이해해야 한다. 2장 구성 요소, 4장 데이터 타입, 5장 표현식은 SQL과 유사하고, 6장 제어문은 다른 프로그래밍 언어와 유사하다. SQL 개발자라면 쉽게 이해할 수 있다.

2부 기초 문법
레코드, 컬렉션, 커서, DML 문, TCS 문, 예외에 대한 내용을 수록하고 있다. 7장 레코드와 8장 컬렉션은 복합 데이터 타입으로 이후 과정의 예제에 자주 사용된다. 9장 커서는 SELECT 문의 결과를 행 단위로 처리한다. 10장 DML 문, 11장 TCS 문은 기본적으로 SQL과 동일하지만 PL/SQL의 확장 기능을 사용할 수 있다. 12장 예외는 PL/SQL의 런타임 에러다. 이벤트 지향 모델 방식으로 예외를 처리할 수 있다.

3부 저장 유닛
프로시저, 함수, 패키지, 트리거, 권한 관리, 코드 관리에 대한 내용을 수록하고 있다. 13장 프로시저, 14장 함수, 15장 패키지, 16장 트리거는 데이터베이스에 저장되는 저장 유닛으로 PL/SQL 개발의 기본 단위다. 각각의 장에서 저장 유닛의 동작을 살펴본다. 저장 유닛은 세밀한 권한 관리가 가능하며 컴파일 파라미터로 컴파일 코드를 제어할 수 있다.

4부 고급 기능
동적 SQL, 테이블 함수, 객체 타입, 성능 관리, 확장 기능, 제공 패키지에 대한 내용을 수록하고 있다. 동적 SQL로 런타임 시점에 SQL 문을 변경하고, 테이블 함수로 테이블 형태로 결과를 조회하고, 개체 타입으로 OOP를 적용할 수 있다. 22장 성능 관리에서 다양한 성능 관리 도구를 살펴보고, 23장 확장 기능, 24장 제공 패키지에서 고급 개발에 필요한 다양한 패키지를 살펴본다.

다루지 않는 내용
이 책은 다른 프로그래밍 언어로 처리할 수 있는 PL/SQL 기능을 다루지 않는다. XML과 JSON은 SQL로 처리할 수 있다. 관련 제공 패키지인 DBMS_XML*, DBMS_JSON 패키지를 살펴보지 않는다. 통신과 관련된 기능은 다른 프로그래밍 언어를 통해 폴링(polling) 방식으로 구현하는 편이 바람직하다. 통신과 관련된 제공 패키지인 UTL_HTTP, UTL_SMTP, UTL_TCP 패키지 또한 살펴보지 않는다.

예제 스크립트
이 책은 예제 중심의 책이다. 수록된 예제는 모두 실습이 가능하며 개발에 활용할 수 있는 코드 조각(code snippet)이다. 이론을 살펴보고 예제를 실습한 후 설명으로 이해한 내용을 비교해보는 방식을 권장한다. 예제 스크립트는 DBian 포럼(www.dbian.net)에서 다운로드할 수 있다.


목차


서문 _ xviii
구성 _ xx
표기 방식 _ xxii
명명 규칙 _ xxiv
실습 환경 _ xxvi
참고 자료 _ xxviii


1부 기본 개념 _ 1
1. 소개 _ 3
1.1 역사 _ 4
1.2 특징 _ 5
1.3 블록 구조 _ 6
1.3.1 익명 블록 _ 7
1.3.2 명명 블록 _ 7
1.3.3 중첩 블록 _ 9
1.4 처리 과정 _ 10
1.5 수행 과정 _ 11

2. 구성 요소 _ 13
2.1 캐릭터 셋 _ 14
2.2 문법 단위 _ 15
2.2.1 구분자 _ 15
2.2.2 식별자 _ 16
2.2.3 리터럴 _ 20
2.2.4 프라그마 _ 25
2.2.5 주석 _ 26

3. 선언 _ 27
3.1 변수 _ 28
3.2 상수 _ 30
3.3 %TYPE 속성 _ 32
3.4 범위 _ 33
3.5 가시성 _ 34

4. 데이터 타입 _ 37
4.1 사전 정의 데이터 타입 _ 38
4.1.1 문자 타입 _ 38
4.1.2 숫자 타입 _ 41
4.1.3 날짜 타입 _ 45
4.1.4 이진 타입 _ 49
4.1.5 ROWID 타입 _ 49
4.1.6 불리언 타입 _ 50
4.2 사용자 정의 서브 타입 _ 50
4.2.1 제한 서브 타입 _ 50
4.2.2 무제한 서브 타입 _ 51
4.3 데이터 변환 _ 52

5. 표현식 _ 55
5.1 연산자 _ 56
5.1.1 산술 연산자 _ 56
5.1.2 결합 연산자 _ 58
5.1.3 비교 연산자 _ 59
5.1.4 논리 연산자 _ 62
5.1.5 연산자 우선순위 _ 64
5.2 SQL 함수 _ 65
5.3 시퀀스 _ 66

6. 제어문 _ 69
6.1 조건문 _ 69
6.1.1 IF 문 _ 69
6.1.2 CASE 문 _ 72
6.1.3 고려 사항 _ 75
6.2 반복문 _ 77
6.2.1 LOOP 문 _ 77
6.2.2 WHILE LOOP 문 _ 79
6.2.3 FOR LOOP 문 _ 81
6.2.4 레이블 _ 84
6.2.5 고려 사항 _ 85
6.3 순차문 _ 86
6.3.1 GOTO 문 _ 86
6.3.2 NULL 문 _ 87


2부 기초 문법 _ 89
7. 레코드 _ 91
7.1 선언 _ 92
7.1.1 레코드 타입 _ 92
7.1.2 %ROWTYPE 속성 _ 97
7.1.3 %TYPE 속성 _ 97
7.1.4 한정 표현식 _ 98
7.2 할당 _ 99
7.3 비교 _ 100

8. 컬렉션 _ 103
8.1 선언 _ 104
8.1.1 컬렉션 타입 _ 104
8.1.2 %TYPE 속성 _ 110
8.1.3 다차원 컬렉션 _ 110
8.1.4 한정 표현식 _ 113
8.2 할당 _ 114
8.2.1 MULTISET 연산자 _ 115
8.3 비교 _ 116
8.3.1 MULTISET 조건 _ 117
8.4 컬렉션 메소드 _ 118
8.5 조회 _ 126
8.6 컬렉션 함수 _ 127
8.7 TABLE 컬렉션 표현식 _ 133

9. 커서 _ 135
9.1 암시적 커서 _ 137
9.1.1 SELECT INTO 문 _ 137
9.1.2 CURSOR FOR LOOP 문 _ 142
9.2 명시적 커서 _ 145
9.2.1 선언 _ 145
9.2.2 조회 _ 147
9.3 커서 변수 _ 154
9.3.1 선언 _ 154
9.3.2 할당 _ 155
9.3.3 조회 _ 156
9.3.4 호스트 커서 변수 _ 159
9.3.5 고려 사항 _ 161
9.4 커서 표현식 _ 164

10. DML 문 _ 169
10.1 기본 구문 _ 170
10.1.1 INSERT 문 _ 170
10.1.2 UPDATE 문 _ 171
10.1.3 DELETE 문 _ 173
10.1.4 MERGE 문 _ 173
10.1.5 DML 에러 로깅 _ 176
10.2 RETURNING INTO 절 _ 179
10.2.1 INTO 절 _ 179
10.2.2 BULK COLLECT INTO 절 _ 183
10.3 FORALL 문 _ 184
10.3.1 기본 구문 _ 186
10.3.2 INDICES OF 절 _ 191
10.3.3 VALUES OF 절 _ 192
10.3.4 SAVE EXCEPTIONS 절 _ 193

11. TCS 문 _ 195
11.1 기본 구문 _ 196
11.1.1 COMMIT 문 _ 196
11.1.2 ROLLBACK 문 _ 199
11.1.3 SAVEPOINT 문 _ 200
11.1.4 SET TRANSACTION 문 _ 201
11.1.5 LOCK TABLE 문 _ 202
11.2 FOR UPDATE 절 _ 202
11.3 자율 트랜잭션 _ 206

12. 예외 _ 209
12.1 유형 _ 211
12.1.1 내부 정의 예외 _ 211
12.1.2 사전 정의 예외 _ 2013
12.1.3 사용자 정의 예외 _ 216
12.2 예외 발생 _ 218
12.2.1 RAISE 문 _ 218
12.2.2 RAISE_APPLICATION_ERROR 프로시저 _ 219
12.3 예외 전파 _ 221
12.4 DBMS_UTILITY 패키지 _ 222
12.5 UTL_CALL_STACK 패키지 _ 225
12.5.1 에러 스택 _ 226
12.5.2 백트레이스 _ 228
12.5.3 콜 스택 _ 229
12.6 활용 예제 _ 232


3부 저장 유닛 _ 237
13. 프로시저 _ 239
13.1 유형 _ 240
13.1.1 중첩 프로시저 _ 240
13.1.2 저장 프로시저 _ 242
13.2 파라미터 _ 243
13.2.1 방식 _ 245
13.2.2 NOCOPY 키워드 _ 250
12.2.3 인수 표기법 _ 252
12.2.4 기술 순서 _ 253
13.3 오버로딩 _ 254
13.4 전방 선언 _ 256
13.5 정보 조회 _ 257
13.6 고려 사항 _ 260
13.6.1 날짜 처리 _ 260
13.6.2 트랜잭션 처리 _ 261

14. 함수 _ 269
14.1 유형 _ 271
14.1.1 중첩 함수 _ 271
14.1.2 저장 함수 _ 273
14.2 파라미터 _ 277
14.3 오버로딩 _ 278
14.4 옵션 _ 279
14.4.1 DETERMINISTIC _ 279
14.4.2 RESULT_CACHE _ 282
14.4.3 PIPELINED _ 285
14.4.4 PARALLEL_ENABLE _ 286
13.5 정보 조회 _ 288
14.6 고려 사항 _ 288
14.6.1 문맥 전환 _ 288
14.6.2 Recursive Call _ 290
14.6.3 읽기 일관성 _ 292
14.6.4 자율 트랜잭션 _ 294

15. 패키지 _ 299
15.1 요소 _ 301
15.1.1 프로시저 _ 302
15.1.2 함수 _ 305
15.1.3 변수 _ 306
15.1.4 상수 _ 309
15.1.5 커서 _ 310
15.1.6 타입 _ 314
15.1.7 예외 _ 322
15.2 초기화 섹션 _ 323
15.3 SERIALLY_REUSABLE 프라그마 _ 324
15.4 DBMS_SESSION 패키지 _ 329
15.5 정보 조회 _ 335
15.6 활용 예제 _ 339

16. 트리거 _ 343
16.1 DML 트리거 _ 345
16.1.1 단순 DML 트리거 _ 345
16.1.2 INSTEAD OF DML 트리거 _ 364
16.1.3 복합 DML 트리거 _ 366
16.2 시스템 트리거 _ 370
16.2.1 데이터베이스 트리거 _ 371
16.2.2 스키마 트리거 _ 373
16.2.3 INSTEAD OF CREATE 트리거 _ 374
16.2.4 이벤트 속성 함수 _ 375
16.3 활용 예제 _ 394

17. 권한 관리 _ 407
17.1 오브젝트 권한 _ 408
17.2 AUTHID 속성 _ 410
17.2.1 정의자 권한 _ 411
17.2.2 호출자 권한 _ 415
17.2.3 권한 우선순위 _ 418
17.3 BEQUEATH 절 _ 420
17.3.1 관련 함수 _ 422
17.4 코드 기반 접근 제어 _ 423
17.5 권한 상속 _ 427
17.5.1 INHERIT PRIVILEGES 권한 _ 427
17.5.2 INHERIT REMOTE PRIVILEGES 권한 _ 430
17.6 ACCESSIBLE BY 절 _ 431

18. 코드 관리 _ 435
18.1 오브젝트 종속성 _ 435
18.1.1 종속성 _ 435
18.1.2 무효화 _ 438
18.1.3 UTL_RECOMP 패키지 _ 444
18.1.4 DBMS_UTILITY 패키지 _ 445
18.2 컴파일 파라미터 _ 446
18.2.1 PLSQL_OPTIMIZE_LEVEL 파라미터 _ 448
18.2.2 PLSQL_CODE_TYPE 파라미터 _ 451
18.2.3 PLSQL_DEBUG 파라미터 _ 452
18.2.4 PLSQL_WARNINGS 파라미터 _ 453
18.2.5 NLS_LENGTH_SEMANTICS 파라미터 _ 461
18.3 조건부 컴파일 _ 463
18.3.1 선택 지시어 _ 463
18.3.2 에러 지시어 _ 465
18.3.3 조회 지시어 _ 466
18.3.4 DBMS_DB_VERSION 패키지 _ 478
18.3.5 DBMS_PREPROCESSOR 패키지 _ 472
18.4 PL/Scope _ 474
18.5 소스 코드 래핑 _ 479
18.5.1 warp 명령어 _ 480
18.5.2 DBMS_DDL 패키지 _ 481


4부 고급 기능 _ 485
19. 동적 SQL _ 487
19.1 NDS 방식 _ 488
19.1.1 EXECUTE IMMEDIATE 문 _ 488
19.1.2 OPEN FOR, FETCH, CLOSE 문 _ 497
19.1.3 동적 조건 _ 499
19.1.4 리터럴 SQL _ 503
19.2 DBMS_SQL 패키지 _ 507
19.2.1 기본 예제 _ 507
19.2.2 배열 처리 _ 516
19.2.3 정보 조회 _ 521
19.2.4 커서 변환 _ 528
19.2.5 결과 반환 _ 530
19.2.6 패키지 타입 _ 535

20. 테이블 함수 _ 539
20.1 일반 테이블 함수 _ 540
20.2 파이프라인 테이블 함수 _ 541
20.2.1 기본 문법 _ 541
20.2.2 병렬 처리 _ 542
20.2.3 활용 예제 _ 546
20.3 다형성 테이블 함수 _ 552
20.3.1 기본 구조 _ 552
20.3.2 DBMS_TF 패키지 _ 556
20.4 SQL 매크로 _ 602
20.4.1 스칼라 방식 _ 602
20.4.2 테이블 방식 _ 604

21. 객체 타입 _ 611
21.1 기본 문법 _ 612
21.1.1 생성자 메소드 _ 613
21.1.2 멤버 메소드 _ 615
21.1.3 정적 메소드 _ 619
21.1.4 오버로딩 _ 620
21.1.5 상속 _ 622
21.1.6 오버라이딩 _ 629
21.1.7 할당 _ 630
21.1.8 정보 조회 _ 632
21.2 객체 저장 _ 633
21.2.1 관계형 테이블 방식 _ 633
21.2.2 객체 테이블 방식 _ 635
21.3 관리 구문 _ 640
21.3.1 ALTER TYPE 문 _ 641
21.3.2 DROP TYPE 문 _ 645
21.3.3 DROP TYPE BODY 문 _ 646

22. 성능 관리 _ 647
22.1 PL/SQL Profiler _ 649
22.2 PL/SQL Trace _ 652
22.3 PL/SQL Hierarchical Profiler _ 656
22.3.1 12.2 이하 버전 _ 656
22.3.2 18.3 이상 버전 _ 661
22.4 PL/SQL Code Coverage _ 664
22.5 SQL Trace _ 668
22.6 정보 설정 _ 671

23. 확장 기능 _ 675
23.1 컨텍스트 _ 676
23.2 파이프 _ 683
23.3 경고 _ 688
23.4 큐 _ 693
23.4.1 기본 예제 _ 693
23.4.2 메시지 알림 _ 697
23.5 전역 트랜잭션 _ 701
23.6 병렬 실행 _ 705
23.6.1 태스크 _ 706
23.6.2 청크 _ 707
23.6.3 실행 _ 714
23.6.4 객체 관리 _ 720
23.7 잡 _ 722
23.8 스케줄러 _ 731
23.8.1 프로그램 _ 732
23.8.2 스케줄 _ 737
23.8.3 잡 _ 743

24. 제공 패키지 _ 757
24.1 DBMS_ASSERT 패키지 _ 758
24.2 DBMS_CRYPTO 패키지 _ 761
24.2.1 암호화 _ 761
24.2.2 임의 값 _ 766
24.3 DBMS_LOB 패키지 _ 767
24.4 DBMS_METADATA 패키지 _ 776
24.4.1 기본 조회 _ 776
24.4.2 고급 조회 _ 779
24.5 DBMS_OUTPUT 패키지 _ 783
24.6 DBMS_RANDOM 패키지 _ 789
24.7 DBMS_SESSION 패키지 _ 790
24.8 DBMS_UTILITY 패키지 _ 792
24.8.1 시간 측정 _ 792
24.8.2 구문 처리 _ 793
24.8.3 이름 처리 _ 795
24.8.4 정보 조회 _ 799
24.9 OWA_OPT_LOCK 패키지 _ 802
24.10 UTL_FILE 패키지 _ 804
24.11 UTL_MATCH 패키지 _ 812
24.12 UTL_RAW 패키지 _ 814


부록 _ 817
A. 오라클 데이터베이스 설치 _ 819
B. SCOTT 스키마 _ 832
C. 오브젝트 타입명 _ 835
D. 디버깅 _ 836
E. 구분자 분리 값 _ 839
F. 칼럼 데이터 타입명 _ 844
G. SQL 함수 코드명 _ 845
H. ROWID 청크 _ 846
I. 사용자 정의 집계 함수 _ 848
J. 자바 저장 프로시저 _ 854
K. PL/SQL 선언 절 _ 857
L. 전용 임시 테이블 _ 859


찾아보기 _ 863
A. 용어 _ 865
B. 구문 _ 871
C. 제공 패키지 _ 875

교환 및 환불안내

도서교환 및 환불
  • ㆍ배송기간은 평일 기준 1~3일 정도 소요됩니다.(스프링 분철은 1일 정도 시간이 더 소요됩니다.)
  • ㆍ상품불량 및 오배송등의 이유로 반품하실 경우, 반품배송비는 무료입니다.
  • ㆍ고객님의 변심에 의한 반품,환불,교환시 택배비는 본인 부담입니다.
  • ㆍ상담원과의 상담없이 교환 및 반품으로 반송된 물품은 책임지지 않습니다.
  • ㆍ이미 발송된 상품의 취소 및 반품, 교환요청시 배송비가 발생할 수 있습니다.
  • ㆍ반품신청시 반송된 상품의 수령후 환불처리됩니다.(카드사 사정에 따라 카드취소는 시일이 3~5일이 소요될 수 있습니다.)
  • ㆍ주문하신 상품의 반품,교환은 상품수령일로 부터 7일이내에 신청하실 수 있습니다.
  • ㆍ상품이 훼손된 경우 반품 및 교환,환불이 불가능합니다.
  • ㆍ반품/교환시 고객님 귀책사유로 인해 수거가 지연될 경우에는 반품이 제한될 수 있습니다.
  • ㆍ스프링제본 상품은 교환 및 환불이 불가능 합니다.
  • ㆍ군부대(사서함) 및 해외배송은 불가능합니다.
  • ㆍ오후 3시 이후 상담원과 통화되지 않은 취소건에 대해서는 고객 반품비용이 발생할 수 있습니다.
반품안내
  • 마이페이지 > 나의상담 > 1 : 1 문의하기 게시판 또는 고객센터 1800-7327
교환/반품주소
  • 경기도 파주시 문발로 211 1층 / (주)북채널 / 전화 : 1800-7327
  • 택배안내 : CJ대한통운(1588-1255)
  • 고객님 변심으로 인한 교환 또는 반품시 왕복 배송비 5,000원을 부담하셔야 하며, 제품 불량 또는 오 배송시에는 전액을 당사에서부담 합니다.