본문 바로가기

DataBase/Oracle

Chapter 6 PL SQL(Procedural Language/SQL) - 9 PLT 6.9 SUBPROGRAM PL/SQL을 지원하는 어떤 툴이나 언어에서도 SUBPROGRAM(프로시저와 함수)을 실행할 수 있다. PL/SQL내부에서 식의 일부로서 함수를 실행할 수 있다. EXECUTE는 명령 다음에 입력되는 Stored Procedure를 실행한다. SUBPROGRAM의 개요 PL/SQL 프로시저와 함수는 3GL의 프로시저 및 함수와 매우 비슷하게 동작된다. 모듈화를 통해 관리가 용이하고 적절히 논리적 단위로 나누어진 프로그래밍을 할 수 있다. 즉, 잘 정의된 논리적인 단위로 코드를 분할할 수 있다. PL/SQL에서 이들 단위를 단위 프로그램 또는 SUBPROGRAM이라 부른다. PL/SQL에는 프로시저와 함수라는 두 가지 유형의 SUBPROGRAM이 있다. SUBPROGRAM.. 더보기
Chapter 6 PL SQL(Procedural Language/SQL) - 8 PLT 6.8 PL/SQL로 예외 처리 PL/SQL 코드를 실행할 때 error 발생하는 경우가 있다. Error는 예외(Exception)를 발생시켜 PL/SQL 블록을 중지시키고 예외 처리기 부분으로 제어가 이동한다. Exception handler는 Exception을 검출하고 조건에 따라 조치 작업을 할 수 있다. 예외 처리란 예외는 PL/SQL 블록의 실행 중에 발생하여 블록의 주요 부분을 중단 시킨다. 항상 PL/SQL 예외가 발생할 때 블록은 항상 종료되지만 마지막 조치 작업을 수행하도록 예외 처리 부분을 작성할 수 있다. 1. 예외란 무엇인가 ? - PL/SQL을 실행 동안에 발생하는 error 처리를 의미한다. 2. 어떻게 발생되는가 ? - Oracle 오류가 발생할 때 - 사용자가 직접.. 더보기
Chapter 6 PL SQL(Procedural Language/SQL) - 7 PLT 6.7 매개변수와 CURSOR CURSOR가 열릴 때 CURSOR로 매개변수 값을 전달하고, CURSOR가 실행될 때 질의에서 그 값이 사용될 수 있습니다. 이것은 각 경우마다 다른 활성 셋(set)을 생성하는 블록에서 여러 번 명시적 CURSOR를 열고 닫을 수 있음을 의미합니다. CURSOR선언 시 각각 형식적인(formal) 매개변수는 OPEN문장에서 실제 해당 매개변수를 가져야 합니다. 매개변수 데이터형은 스칼라 변수의 데이터형과 동일하지만 크기는 주지 않습니다. 매개변수 명은 CURSOR의 질의 표현식에서 참조하기 위한 것입니다. CURSOR cursor_name [(parameter_name1 datatype, . . . .)] IS select_statement; cursor_name.. 더보기
Chapter 6 PL SQL(Procedural Language/SQL) - 6 PLT 6.6 CURSOR ORACLE SERVER은 SQL문장을 실행하기 위하여 Private SQL Area이라 불리는 작업 영역을 사용합니다. Private SQL Area에 이름을 붙이고 저장된 정보를 액세스하기 위해 PL/SQL CURSOR를 사용한다. 블록의 실행 부분이 SQL문장을 실행할 때 PL/SQL은 SQL식별자를 가지는 암시적 CURSOR를 생성하고 자동적으로 이 CURSOR를 관리합니다. 명시적 CURSOR는 명시적으로 선언되고 프로그래머에 의해 명명됩니다. 암시적 CURSOR ORACLE SERVER은 명시적으로 선언된 CURSOR와 관련 없는 각 SQL문장을 수행하기 위해 CURSOR를 암시적으로 생성하여 사용한다. PL/SQL은 SQL CURSOR로써 가장 최근의 암시적 CUR.. 더보기
Chapter 6 PL SQL(Procedural Language/SQL) - 5 PLT 6.5 PL/SQL의 제어 구조 여러 가지 제어 구조를 이용하여 PL/SQL 블럭에 있는 문장들의 논리적 흐름을 변경할 수 있다. 조건에 의해 분기하는 IF문을 이용한 조건 구조와 LOOPING구조(조건 없이 반복하는 BASIC루프, 계수를 이용하여 반복을 하는 FOR루프, 문장이 TRUE인 동안에 반복을 하는 WHILE루프, 루프를 종료하는 EXIT문)가 있다. IF문 PL/SQL의 IF문장은 다른 언어의 IF문장과 거의 유사하다. 즉 일치하는 조건(TRUE,FALSE, NULL)에 따라 선택적으로 작업을 수행할 수 있게 해준다. TRUE면 THEN과 ELSE사이의 문장을 수행하고 FALSE나 NULL이면 ELSE와 END IF사이의 문장을 수행한다. IF condition THEN statem.. 더보기
Chapter 6 PL SQL(Procedural Language/SQL) - 4 PLT 6.4 PL/SQL에서 SQL문장 데이터베이스에서 정보를 추출할 필요가 있을 때 또는 데이터베이스로 변경된 내용을 적용할 필요가 있을 때 SQL을 사용합니다. PL/SQL은 SQL에 있는 DML과 TRANSACTION 제어 명령을 모두 지원합니다. 테이블의 행에서 질의된 값을 변수에 할당 시키기 위해 SELECT문장을 사용합니다. DML문장은 다중 행 처리를 할 수 있지만 SELECT문장은 하나의 행만을 처리할 수 있습니다. PL/SQL에서 SQL문장 사용 n SELECT 명령어를 사용하여 데이터베이스에서 한 행의 데이터를 추출합니다. n DML명령어를 사용하여 데이터베이스의 행에 대해 갱신할 수 있습니다. n COMMIT, ROLLBACK, SAVEPOINT명령어로 TRANSACTION을 제어 .. 더보기
Chapter 6 PL SQL(Procedural Language/SQL) - 3 PLT 6.3 PL/SQL 블록 PL/SQL은 프로그램을 논리적인 블록으로 나누게 하는 구조화된 블록 언어이다. PL/SQL 블록에서 사용하는 변수는 블록에 대해 논리적으로 선언할 수 있고 사용할 수 있다. 변수들과 그 외의 식별자를 참조하고 선언함으로써 PL/SQL 블록 내에서 값을 저장하고 변경할 수 있는 논리적인 단위이다. PL/SQL 블록 구문과 지침 PL/SQL은 SQL의 확장이기 때문에 SQL에 적용하는 일반적인 구문은 PL/SQL 언어에 대해서도 적용 가능하다. 문장은 몇 라인 이상 계속될 수 있습니다. 문법적인 요소는 공백으로 분리될 수 있습니다. 식별자 식별자는 상수, 변수, 예외 ,커서 ,커서 변수, SUBPROGRAM, 패키지를 포함하는PL/SQL프로그램 항목과 요소를 명명하기 위해 .. 더보기
Chapter 6 PL SQL(Procedural Language/SQL) - 2 PLT 6.2 PL/SQL에서의 변수 사용 SQL과 절차적인 문장 안에서 PL/SQL로써 변수를 선언할 수 있고 그것을 사용할 수 있다. 변수는 자료를 일시적으로 저장하고 변경하고 검증하기 위해 하나 또는 그 이상의 변수를 선언하여 사용한다. 또한 변수는 데이터베이스를 액세스하지 않고 계산이나 다른 데이터 조작에 사용할 수 있다. 이러한 변수는 일단 선언되면 다른 선언적 문장을 포함한 다른 문장에서 간단하게 그것을 반복적으로 참조하여 사용할 수 있다. %TYPE와 %ROWTYPE을 사용하여 변수를 선언하면 테이블의 구조가 변경(데이터형과 길이)되어도 Application에서는 실행 시간에 테이블을 참조하여 변수가 정의되므로 데이터의 독립성, 유지비용 절감을 제공하고, 새로운 업무 요구에 충족시키기 위해 .. 더보기
Chapter 6 PL SQL(Procedural Language/SQL) - 1 Chapter 6 PL SQL(Procedural Language/SQL) PLT 6.1 PL/SQL 개요 PL/SQL(Procedural Language/SQL)은 최근의 프로그래밍 언어의 특성을 수용한, SQL의 확장이라 할 수 있다. SQL의 데이터 조작(DML)과 질의문(QUERY)을 블록 구조에 절차적 단위(IF, LOOP, FOR등)로 된 코드를 포함할 수 있으며 절차적 프로그래밍을 가능하게 한 강력한 TRANSACTION 처리 언어이다. PL/SQL은 별개의 Oracle 제품이 아니라 Oracle 서버와 다른 Oracle TOOL에 이용되고 있는 프로그래밍 언어이다. PL/SQL 의 블록은 Oracle 서버나 툴에 내장되는 PL/SQL 엔진에 전달되어 처리된다. 사용하는 엔진은 PL/SQL .. 더보기
PLT 5.8 SUBQUERY PLT 5.8 SUBQUERY 이번 장에서는 알려지지 않은 기준에 의한 데이터 검색을 위한 NESTED SUBQUERY와 데이터 조작 문장에 SUBQUERY를 사용하는 방법을 배우고 SUBQUERY에 의해 검색된 데이터 정렬에 대해 다루기로 한다. SUBQUERY의 개념 다른 SELECT 문장의 절에 내장된 SELECT 문장 입니다. SUBQUERY는 여러 절에서 사용 가능하며 SELECT 문장 안에 기술된 SELECT 문장이다. NESTED SUBQUERY는 MAIN QUERY이전에 한번만 수행되며 SUBQUERY의 결과를 MAIN QUERY에 의해 조건으로 사용된다. SUBQUERY를 사용하여 간단한 문장을 강력한 문장으로 만들 수 있고 테이블 자체의 데이터에 의존하는 조건으로 테이블의 행을 검색할 .. 더보기