다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL

Similar documents
다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL

다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL

목차 BUG 문법에맞지않는질의문수행시, 에러메시지에질의문의일부만보여주는문제를수정합니다... 3 BUG ROUND, TRUNC 함수에서 DATE 포맷 IW 를추가지원합니다... 5 BUG ROLLUP/CUBE 절을포함하는질의는 SUBQUE

다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL

DBMS & SQL Server Installation Database Laboratory

10.ppt

Microsoft Word - [Unioneinc] 특정컬럼의 통계정보 갱신_ _ldh.doc

FlashBackt.ppt

@OneToOne(cascade = = "addr_id") private Addr addr; public Emp(String ename, Addr addr) { this.ename = ename; this.a

13주-14주proc.PDF

목차 BUG offline replicator 에서유효하지않은로그를읽을경우비정상종료할수있다... 3 BUG 각 partition 이서로다른 tablespace 를가지고, column type 이 CLOB 이며, 해당 table 을 truncate

Tablespace On-Offline 테이블스페이스 온라인/오프라인

歯sql_tuning2

MySQL-.. 1

목차 BUG DEQUEUE 의 WAIT TIME 이 1 초미만인경우, 설정한시간만큼대기하지않는문제가있습니다... 3 BUG [qp-select-pvo] group by 표현식에있는컬럼을참조하는집합연산이존재하지않으면결괏값오류가발생할수있습니다... 4

6장. SQL

ALTIBASE HDB Patch Notes

다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL

I T C o t e n s P r o v i d e r h t t p : / / w w w. h a n b i t b o o k. c o. k r

InsertColumnNonNullableError(#colName) 에해당하는메시지출력 존재하지않는컬럼에값을삽입하려고할경우, InsertColumnExistenceError(#colName) 에해당하는메시지출력 실행결과가 primary key 제약에위배된다면, Ins

<C1A62038B0AD20B0ADC0C7B3EBC6AE2E687770>

untitled

WINDOW FUNCTION 의이해와활용방법 엑셈컨설팅본부 / DB 컨설팅팀정동기 개요 Window Function 이란행과행간의관계를쉽게정의할수있도록만든함수이다. 윈도우함수를활용하면복잡한 SQL 들을하나의 SQL 문장으로변경할수있으며반복적으로 ACCESS 하는비효율역

강의 개요

Microsoft Word - SQL튜닝_실습교재_.doc

3 S Q L A n t i p a t t e r n s Trees/intro/parent.sql CREATE TABLE Comments ( comment_id SERIAL PRIMARY KEY, parent_id BIGINT UNSIGNED, comment TEXT

TITLE

슬라이드 1

단답형 (26 회기출문제 ) 1. 아래와같은테이블이있을때아래의 SQL 결과에대해서 Oracle, SQL Server 순서로적으시오 TAB1 COL1 CHAR(10) COL2 CHAR(10) INSERT INTO TAB1 VALUES ('1',''); INSERT INT

ORACLE EXADATA HCC 압축방식이해하기 엑셈컨설팅본부 /DB 컨설팅팀김철환 개요 시간이지나면서데이터는급속하게증가하고있다. 데이터가증가함에따라 DBMS 에서관리되어지는정보도급속하게증가하고있다. 이로인해저장공간의부족으로하드웨어비용의증가와데이터처리성능에많은문제점들

ORANGE FOR ORACLE V4.0 INSTALLATION GUIDE (Online Upgrade) ORANGE CONFIGURATION ADMIN O

PowerPoint Presentation

Microsoft PowerPoint - 10Àå.ppt

ALTIBASE HDB Patch Notes

Microsoft PowerPoint - 사본 - DB06-SQL,시스템카탈로그,뷰.ppt

PowerPoint Presentation

Microsoft Word - PLSQL.doc

PowerPoint Presentation

Microsoft PowerPoint Python-DB

다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL

SQL Tuning Business Development DB

RDB개요.ppt

Spring Boot/JDBC JdbcTemplate/CRUD 예제

5장 SQL 언어 Part II

ALTIBASE HDB Patch Notes

Tina Admin

PowerPoint 프레젠테이션

Microsoft PowerPoint - ch07_데이터베이스 언어 SQL.pptx

Result Cache 동작원리및활용방안 엑셈컨설팅본부 /DB 컨설팅팀김철환 개요 ORACLE DBMS 를사용하는시스템에서 QUERY 성능은무엇보다중요한요소중하나이며그 성능과직접적인관련이있는것이 I/O 이다. 많은건수를 ACCESS 해야만원하는결과값을얻을수있는 QUER

제목을 입력하세요.

윈백및업그레이드 Tibero Flashback 가이드

Contents Data Mart 1. 개요 실습방향 테스트위한사전설정 본격실습시작 ) 데이터파일 dd 명령어로 백업수행및유실시키기 ) 장애복구수행 결론...7 페이지 2 / 7

[ 목차 ] 5.1 데이터베이스프로그래밍개념 5.2 T-SQL T-SQL 문법 5.3 JAVA 프로그래밍 2

PowerPoint 프레젠테이션

MySQL-Ch10

Microsoft Word - 기술노트[23회] Logminer.doc

90

Microsoft Word - 04_EXCEPTION.doc

윈도우시스템프로그래밍

PowerPoint Presentation

문서 템플릿

ePapyrus PDF Document

대량의 DML 작업에대한성능개선방안 엑셈컨설팅본부 /DB 컨설팅팀박준연 개요 대량의데이터를변경해야하는작업은그자체만으로도큰부담으로다가온다. 하지만변경작업자체에만국한되는것이아니라변경되기전데이터와변경이후데이터를각각저장관리해야하는메커니즘이라면성능을개선해야하는입장에서는더욱큰부담

Microsoft PowerPoint - 3장-MS SQL Server.ppt [호환 모드]

MS-SQL SERVER 대비 기능

Commit_Wait / Commit_Logging 두파라미터를통해 Log File Sync 대기시간을감소시킬수있다는것은놀라움과의아함을동시에느낄수있다. 단지파라미터의수정을통해당연히대기해야하는시간을감축한다는것은분명성능을개선해야하는입장에서는놀라운일이될것이다. 반면, 그에따

Microsoft Word - 기술노트[19회] Flashback.doc

< D53514C2CBAE42CBDC3BDBAC5DBC4ABC5BBB7CEB1D72D3130B3E2B0A3B1E2C3E2BAD0B7F9C1FD28C5EBC7D5292E687770>

Jerry Held


Bind Peeking 한계에따른 Adaptive Cursor Sharing 등장 엑셈컨설팅본부 /DB 컨설팅팀김철환 Bind Peeking 의한계 SQL 이최초실행되면 3 단계의과정을거치게되는데 Parsing 단계를거쳐 Execute 하고 Fetch 의과정을통해데이터

1 데이터베이스 2 MySQL 설치 3 기초 SQL 4 고급 SQL 유용한함수들 JOIN inseog Kim Dep. of Applied Statistics, Dongguk통계데이터베이스 University jinseog.kim gma

Data Sync Manager(DSM) Example Guide Data Sync Manager (DSM) Example Guide DSM Copyright 2003 Ari System, Inc. All Rights reserved. Data Sync Manager

Microsoft PowerPoint - QVIZMVUMWURI.pptx

Relational Model

<4D F736F F D203033C6C4C6BCBCC72DB8AEBFC0B1D7B9E6B9FD2E646F63>

다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL

배치프로그램에서튜닝대상 SQL 추출하기 엑셈컨설팅본부 /DB 컨설팅팀박성호 배치프로그램의성능문제를진단하기위해트레이스를사용할수없고, 개별 SQL 에대한성 능점검은비효율적인경우에어떻게배치프로그램의성능문제를제대로파악하고개선안을도 출할것인가? 복잡한로직을가지고있는프로그램 (

Database Applications - 멀티미디어 데이터베이스 – 제6장 텍스트 색인과 검색

歯PLSQL10.PDF

Microsoft Word - 05_SUBPROGRAM.doc

강의 개요

SQL

ETL_project_best_practice1.ppt

Spring Data JPA Many To Many 양방향 관계 예제

SQL Developer Connect to TimesTen 유니원아이앤씨 DB 기술지원팀 2010 년 07 월 28 일 문서정보 프로젝트명 SQL Developer Connect to TimesTen 서브시스템명 버전 1.0 문서명 작성일 작성자

구축환경 OS : Windows 7 그외 OS 의경우교재 p26-40 참조 Windows 의다른버전은조금다르게나타날수있음 Browser : Google Chrome 다른브라우저를사용해도별차이없으나추후수업의모든과정은크롬사용 한

untitled

예제소스는 에서다운로드하여사용하거나툴바의 [ 새쿼리 ]( 에아래의소스를입력한다. 입력후에는앞으로실습을위해서저장해둔다. -- 실습에필요한 Madang DB 와 COMPANY DB 를모두생성한다. -- 데이터베이스생성 US

F6-Á¤´ä

sms_SQL.hwp

Tina Admin

PowerPoint 프레젠테이션

Microsoft Word - Goodus_기술노트[19회]_Flashback

윈도우시스템프로그래밍

最即時的Sybase ASE Server資料庫診斷工具

SKINFOSEC-CHR-028-ASP Mssql Cookie Sql Injection Tool 분석 보고서.doc

슬라이드 1

(Humphery Kim) RAD Studio : h=p://tech.devgear.co.kr/ : h=p://blog.hjf.pe.kr/ Facebook : h=p://d.com/hjfactory :

그리고.. 엑셀에하나둘완료된쿼리가늘어날때마다... 희열을느낀다... 이글을보는당신은어떻게할것인가? A 군의판단이잘못된것인가? 잘못된판단이아니다최선의판단이다... 11g 전까지는... 11g New Feature 인 Pending Statistics 를 SPA 와함께사용

Transcription:

다양한예제로쉽게배우는 오라클 SQL 과 PL/SQL 서진수저

6 장. DML 을배웁니다 1

- SQL 명령어들 DML (Data Manipulation Language) : INSERT( 입력 ), UPDATE( 변경 ), DELETE( 삭제 ), MERGE( 병합 ) DDL (Data Definition Language) : CREATE ( 생성 ), ALTER ( 수정 ), TRUNCATE ( 잘라내기 ),DROP ( 삭제 ) * DCL (Data Control Language) : GRANT ( 권한주기 ), REVOKE ( 권한뺏기 ) * TCL (Transaction Control Language): COMMIT ( 확정 ), ROLLBACK ( 취소 ) * SELECT : 어떤분류에서는 DQL (Data Query Language) 라고하기도합니다. 2

1. INSERT : 데이터입력명령어 1) INSERT 를사용하여단일행입력하기 INSERT INTO table [(column1, column2, )] VALUES (value 1, value 2,.) ; - 사용예 1: Dept2 테이블에아래와같은내용으로새로운부서정보를입력하세요. * 부서번호 : 9000 * 부서명 : 특판 1 팀 * 상위부서 : 영업부 * 지역 : 임시지역 SCOTT>INSERT INTO dept2(dcode, dname, pdept,area ) 2 VALUES (9000, ' 특판 1 팀 ',' 영업부 ',' 임시지역 ') ; SCOTT>INSERT INTO dept2 2 VALUES(9001, ' 특판 2 팀 ',' 영업부 ',' 임시지역 ') ; 3

- 사용예 2: 특정칼럼만입력하기 부서번호와부서명, 상위부서값만아래의값으로입력하세요. * 부서번호 : 9002 * 부서명 : 특판 3 팀 * 상위부서 : 영업부 SCOTT>INSERT INTO dept2(dcode,dname,pdept) 2 VALUES(9002, ' 특판 3 팀 ', ' 영업부 ') ; 4

- 사용예 3: 날짜데이터입력하기 아래정보를 professor 테이블에입력하세요. * 교수번호 : 5001 * 교수이름 : 김설희 * ID : Love_me * POSITION : 정교수 * PAY : 510 * 입사일 : 2011 년 11 월 14 일 <- 이부분을주의깊게보세요. SCOTT>INSERT INTO professor (profno, name, id, position, pay, hiredate) 2 VALUES (5001,' 김설희 ','Love_me',' 정교수 ',510,'2011-11-14'); - 윈도용과유닉스용은날짜포맷이다르므로주의해야함. 5

- 사용예 4: Null 값입력하기 * 자동 NULL 값입력하기데이터를입력할때칼럼에값을안주면자동으로 NULL 값이들어갑니다. * 수동 NULL 값입력하기데이터부분에 NULL 값을적어주면됩니다. 6

2) INSERT 를사용하여여러행입력하기 SCOTT>CREATE TABLE professor2 2 AS SELECT * FROM professor ; 실습을위해 professor2 테이블을생성합니다. SQL> INSERT INTO professor2 2 SELECT * FROM professor ; 이방식은이미생성되어있는테이블에서대량의데이터를복사해올 때아주많이사용하는방법입니다. ITAS 라고부르기도합니다. 7

3) INSERT ALL 을이용한여러테이블에여러행입력하기 - 사용예 1 : 다른테이블에한꺼번에데이터입력하기 SCOTT> INSERT ALL 2 INTO p_01 (no, name) 3 VALUES (1,'AAA') 4 INTO p_02 (no, name) 5 VALUES(2,'BBB') 6 SELECT * FROM dual ; 이예제는 p_01 테이블과 P_02 테이블에각각서로다른데이터를동시에입력하는방법을보여주고있습니다. 8

- 사용예 2 : 다른테이블의데이터를가져와서입력하기 Professor 테이블에서교수번호가 1000 번에서 1999 번까지인교수의번호 와교수이름은 p_01 테이블에입력하고교수번호가 2000 번에서 2999 번까 지인교수의번호와이름은 p_02 테이블에입력하세요. SCOTT>INSERT ALL 2 WHEN profno BETWEEN 1000 AND 1999 THEN 3 INTO p_01 VALUES(profno,name) 4 WHEN profno BETWEEN 2000 AND 2999 THEN 5 INTO p_02 VALUES(profno,name) 6 SELECT profno,name 7 FROM professor ; 9

- 사용예 2 번결과화면 10

- 사용예 3 : 다른테이블에동시에같은데이터입력하기 Professor 테이블에서교수번호가 3000 번에서 3999 번인교수들의교수번호와 이름을 p_01 테이블과 p_02 테이블에동시에입력하세요. SCOTT>INSERT ALL 2 INTO p_01 VALUES (profno,name) 3 INTO p_02 VALUES (profno,name) 4 SELECT profno,name 5 FROM professor 6 WHERE profno BETWEEN 3000 AND 3999 ; 11

2. UPDATE ( 데이터변경하기 ) UPDATE table SET column = value WHERE 조건 ; - 사용예 1: Professor 테이블에서직급이조교수인교수들의 BONUS 를 100 만원으로인상하세요. SCOTT>UPDATE professor 2 SET bonus = 100 3 WHERE position =' 조교수 '; 12

- 사용예 2: Professor 테이블에서차범철교수의직급과동일한직급을가진교수들중현재 급여가 250 만원이안되는교수들의급여를 15% 인상하세요. SCOTT>UPDATE professor 2 SET pay = pay * 1.15 3 WHERE position = ( SELECT position 4 FROM professor 5 WHERE name = ' 차범철 ') 6 AND pay < 250 ; 13

3. DELETE ( 데이터삭제하기 ) DELETE FROM table WHERE 조건 ; - 사용예 : Dept2 테이블에서부서번호 (DCODE) 가 9000 번에서 9100 번사이인매장들을삭제하세요. SCOTT>DELETE FROM dept2 2 WHERE dcode between 9000 and 9100 ; DELETE 는데이터는삭제되나용량은변함이없다는것!!! 14

-Table Reorg 하기 ( DELETE 후용량줄이기 ) SCOTT>CONN / AS SYSDBA ; SYS> CREATE TABLE scott.test01 ( 2 no NUMBER, name VARCHAR2(20), addr VARCHAR2(20)); SYS>BEGIN 2 FOR i IN 1..500000 LOOP 3 INSERT INTO scott.test01 4 VALUES ( i, DBMS_RANDOM.STRING('A',19), 5 DBMS_RANDOM.STRING('Q',19) ); 6 END LOOP; 7 COMMIT; 8 END; 9 / PL/SQL procedure successfully completed. 15

- 테이블크기확인 SYS>SELECT COUNT(*) FROM SCOTT.TEST01; COUNT(*) -------------- 500000 <- 50 만건의데이터가확인됩니다. SYS>ANALYZE TABLE scott.test01 COMPUTE STATISTICS ; Table analyzed. SYS>SELECT SUM(BYTES)/1024/1024 MB 2 FROM DBA_SEGMENTS 3 WHERE OWNER='SCOTT' 4 AND SEGMENT_NAME='TEST01'; MB --------------- 28 <- 테이블크기가 28 MB 로확인됩니다. 16

SYS>SELECT table_name, num_rows, blocks, empty_blocks 2 FROM dba_tables 3 WHERE owner= SCOTT 4 AND table_name='test01'; TABLE_NAME NUM_ROWS BLOCKS EMPTY_BLOCKS ------------------ -------------------- ----------- ------------------- TEST01 500000 3520 64 SYS> SELECT COUNT(DISTINCT DBMS_ROWID.ROWID_BLOCK_NUMBER(rowid) 2 DBMS_ROWID.ROWID_RELATIVE_FNO(rowid)) " 실사용블록수 " 3 FROM scott.test01 ; 실사용블록수 ---------------- 3447 실제사용하고있는블록개수입니다. 17

SYS>DELETE FROM SCOTT.TEST01; 500000 rows deleted. SYS>COMMIT; Commit complete. SYS>SELECT COUNT(*) FROM SCOTT.TEST01; COUNT(*) ------------- 0 <- 모든데이터가전부삭제됨이확인됩니다. 18

SYS>SELECT SUM(BYTES)/1024/1024 MB 2 FROM DBA_SEGMENTS 3 WHERE OWNER='SCOTT' 4 AND SEGMENT_NAME='TEST01'; MB ---------- 28 <- 용량은변함없이그대로입니다. SYS>SELECT COUNT(DISTINCT DBMS_ROWID.ROWID_BLOCK_NUMBER(rowid) 2 DBMS_ROWID.ROWID_RELATIVE_FNO(rowid)) " 실사용블록수 " 3 FROM scott.test01 ; 실사용블록수 --------------- 0 DELETE 가발생해서모든데이터가삭제되었지만테이블의용량은전혀변하지않음이확인되었습니다. 19

- DELETE 후용량까지줄이는 Reorg 작업을수행합니다. 1. 위에서생성했던 SCOTT.TEST01 테이블에데이터를추가합니다. SYS>BEGIN 2 FOR i IN 1..1000 LOOP 3 INSERT INTO scott.test01 4 VALUES (i, DBMS_RANDOM.STRING('A',19) 5, DBMS_RANDOM.STRING('B',19) ); 6 END LOOP; 7 COMMIT; 8 END; 9 / PL/SQL procedure successfully completed. 20

2. 데이터건수와테이블용량을측정합니다. SYS>SELECT COUNT(*) FROM SCOTT.TEST01; COUNT(*) ------------ 1000 <- 1000 건이입력되었습니다. SYS>SELECT SUM(BYTES)/1024/1024 MB 2 FROM DBA_SEGMENTS 3 WHERE OWNER='SCOTT' 4 AND SEGMENT_NAME='TEST01'; MB ------------ 28 <- 용량은여전히 28MB 입니다. 21

3. 1000 건의데이터중 300 건만삭제합니다. SYS>DELETE FROM SCOTT.TEST01 2 WHERE no BETWEEN 1 AND 300 ; 300 rows deleted. SYS>COMMIT; Commit complete. SYS>SELECT COUNT(*) FROM SCOTT.TEST01; COUNT(*) ------------ 700 22

SYS>SELECT SUM(BYTES)/1024/1024 MB 2 FROM DBA_SEGMENTS 3 WHERE OWNER='SCOTT' 4 AND SEGMENT_NAME='TEST01'; MB ------------- 28 <- 여전히예상대로 28 MB 입니다. 23

4. 테이블 REORG( 리오그 ) 작업을합니다. SYS>SELECT TABLE_NAME,TABLESPACE_NAME 2 FROM DBA_TABLES 3 WHERE TABLE_NAME='TEST01'; TABLE_NAME TABLESPACE_NAME ---------------- -------------------------- TEST01 USERS <- 현재 USERS 테이블스페이스입니다. SYS>ALTER TABLE SCOTT.TEST01 MOVE TABLESPACE USERS; Table altered. 24

SYS>SELECT SUM(BYTES)/1024/1024 MB 2 FROM DBA_SEGMENTS 3 WHERE OWNER='SCOTT' 4 AND SEGMENT_NAME='TEST01'; MB ------------.0625 <- 용량이현저하게줄어든것이확인됩니다. SYS>SELECT COUNT(*) FROM SCOTT.TEST01 ; COUNT(*) -------------- 700 <- 데이터는 700 건있습니다. 25

4. MERGE ( 테이블합치기 ) SQL> MERGE INTO Table1 2 USING Table2 3 ON ( 병합조건절 ) 4 WHEN MATCHED THEN 5 UPDATE SET 업데이트내용 6 DELETE WHERE 조건 7 WHEN NOT MATCHED THEN 8 INSERT VALUES( 컬럼이름 ) ; 26

- Merge 실습 27

- Merge 전테이블내용확인 SCOTT>SELECT * FROM pt_01 ; 판매번호제품번호 수량 금액 ----------- ------------ ---------- ---------- 12010101 1000 1 500 12010102 1001 1 400 12010103 1003 1 300 SCOTT>SELECT * FROM pt_02 ; 판매번호제품번호 수량 금액 ----------- ------------ ---------- ---------- 12010201 1004 1 600 12010202 1000 1 500 12010203 1005 1 700 SCOTT>SELECT * FROM p_total ; no rows selected 28

- MERGE 작업 QUERY 1 (pt_01 테이블과 p_total 테이블병합 ) SCOTT>MERGE INTO p_total total 2 USING pt_01 p01 3 ON (total. 판매번호 =p01. 판매번호 ) 4 WHEN MATCHED THEN 5 UPDATE SET total. 제품번호 = p01. 제품번호 6 WHEN NOT MATCHED THEN 7 INSERT VALUES(p01. 판매번호, p01. 제품번호, p01. 수량, p01. 금액 ) ; 29

- MERGE 작업 QUERY 2 (pt_02 테이블과 p_total 테이블병합 ) SCOTT>MERGE INTO p_total total 2 USING pt_02 p02 3 ON (total. 판매번호 =p02. 판매번호 ) 4 WHEN MATCHED THEN 5 UPDATE SET total. 제품번호 = p02. 제품번호 6 WHEN NOT MATCHED THEN 7 INSERT VALUES(p02. 판매번호, p02. 제품번호, p02. 수량, p02. 금액 ) ; 30

- Merge 작업완료후결과조회하기 31

5. TRANSACTION 관리하기 초등학교 1 학년 2 학년 3 학년 4 학년 5 학년 6 학년 중학교 1 학년 2 학년 3 학년 대학교 1 학년 2 학년 3 학년 4 학년 - Commit 트랜잭션확정하기 - Rollback 트랜잭션취소하기 32

6. DML ERROR LOGGING 하기 ( 10g R2 부터지원됨 ) 1. DBMS_ERRLOG 패키지를수행해서에러로깅테이블 DML_ERRORS 생성합니다. SCOTT>SELECT * FROM dml_err_test ; NO NAME ---------- ---------- 1 AAA 2 BBB 이테이블은 NO 컬럼에 Primary Key 가설정이되어있습니다. 33

- 에러내용을로깅하기위해 DBMS_ERROR 패키지를수행합니다. SCOTT>BEGIN 2 DBMS_ERRLOG.CREATE_ERROR_LOG ( 3 dml_table_name => 'DML_ERR_TEST', 4 err_log_table_name => 'DML_ERRORS' ); 5 END ; 6 / PL/SQL procedure successfully completed. 34

- 에러가기록되는 DML_ERRORS 테이블을살펴봅니다. SCOTT>DESC dml_errors ; Name Null? Type ------------------------------ --------- ---------------------------- ORA_ERR_NUMBER$ NUMBER ORA_ERR_MESG$ VARCHAR2(2000) ORA_ERR_ROWID$ ROWID ORA_ERR_OPTYP$ VARCHAR2(2) ORA_ERR_TAG$ VARCHAR2(2000) NO VARCHAR2(4000) NAME VARCHAR2(4000) 35

2. DML_ERR_TEST 테이블에에러를발생하는 DML 을수행합니다. SCOTT>INSERT INTO dml_err_test 2 VALUES (1,'CCC') 3 LOG ERRORS INTO dml_errors('insert..rl=unlimited') 4 REJECT LIMIT UNLIMITED ; 0 rows created. 36

3. 에러를확인합니다 ( 관련스크립트는교재를참조하세요 ) SCOTT>exec print_table('select * FROM dml_errors'); ORA_ERR_NUMBER$ : 1 ORA_ERR_MESG$ : ORA-00001: unique constraint (SCOTT.SYS_C0014256) violated ORA_ERR_ROWID$ : ORA_ERR_OPTYP$ : I ORA_ERR_TAG$ : INSERT..RL=UNLIMITED NO : 1 NAME : CCC ----------------- PL/SQL procedure successfully completed. 37