금융에 대한 모든 것

PL/SQL

 SQL 문장에서 변수 정의, 조건 처리, 반복 처리, 등을 지원하며 오라클 자체에 내장되어 있는 절차적 언어입니다. 변수, 상수 등을 선언하여 SQL 절차형 언어에서 사용, IF, LOOP 커서를 사용하여 여러 행을 검색할 수도 있습니다. PL/SQL 블록 구조의 언어로서, 크게 이름부, 선언부, 실행부, 예외 처리부로 나뉩니다.

 

영역

설명

이름부

블록의 명칭이 오는 부분입니다.

선언부(DECLARE)

PL/SQL에서 사용하는 모든 변수나 상수를 선언하는 부분으로서 생략 가능합니다.

실행부(BEGIN) 

절차적 형식으로 SQL문을 실행할 있도록 절차적 언어의 요소인 제어문, 반복문, 함수 정의 로직을 기술할 있는 부분입니다.

예외 처리부(EXCEPTION)

PL/SQL 문이 실행되는 중에 에러가 발생할 있는데 이를 예외사항이 발생했을 이를 해결하기 위한 문장을 옵션을 기술하는 부분입니다.

예시

SET SERVEROUTPUT ON
DECLARE
    num NUMBER;  -- 변수 선언
BEGIN 
    num := 100;  -- 코드 실행
    DBMS_OUTPUT.PUT_LINE(num);
END;

먼저 출력 값을 보기 위해 SET SERVEROUTPUT ON 입력합니다. DECLARE에서는 사용할 변수를 선언하고 BEGIN 에는 동작할 코드를 작성합니다. DBMS_OUTPUT.PUT_LINE 함수로 변수 num 값을 출력하고 있습니다.

 

변수 선언과 대입문

 변수를 선언할 사용되는 키워드들이 있습니다. 해당 키워드는 변수명과 데이터 타입 사이에 사용됩니다.

 

구문

설명

IDENTIFIER

변수의 이름 나타내는 키워드입니다.

CONSTANT

변수의 값을 변경할 없도록 하는 키워드 입니다.

DATATYPE

자료형을 기술합니다.

NOT NULL

값을 반드시 포함하도록 하기 위한 키워드 입니다.

EXPRESSION

다른변수, 연산자나 함수를 포함하는 표현식입니다.

스칼라 변수 , 레퍼런스 변수 선언

변수명 데이터타입(크기);  -- 스칼라 변수
변수명 테이블명.컬럼명%TYPE;  -- 레퍼런스 변수

 변수를 선언할  다른 프로그래밍 언어처럼 선언하는 변수는 스칼라 변수라고 하고, 테이블에 존재하는 칼럼을 참조하여 만든 변수를 레퍼런스 변수라고 합니다. 레퍼런스 변수에 경우, 해당 칼럼의 타입을 그대로 변수에 가져옵니다.

 

변수 선언, 대입 예시

DECLARE
    var_int NUMBER(4);
    var_name T_USER.NAME%TYPE;
BEGIN
    var_name := '이름';
    DBMS_OUTPUT.PUT_LINE(var_name);  --결과: '이름' 출력

PL/SQL에서는 변수에 값을 대입할 때는 '=' 아닌 ':=' 사용합니다.

 

SELECT문

PL/SQL에서도 SELECT문을 사용할 있습니다.

 

예시

DECLARE
    name T_USER.USER_ID%TYPE;
    point T_USER.USER_POINT%TYPE;
BEGIN 
    SELECT USER_ID, USER_POINT
      INTO name, point 
      FROM T_USER
     WHERE USER_ID = 'yunyc1010';
    
    DBMS_OUTPUT.PUT_LINE(name);  -- 사용자 ID
    DBMS_OUTPUT.PUT_LINE(POINT); -- 사용자 포인트
END;

PL/SQL에서 SELECT문을 사용하면 INTO 사용하여 조회한 값을 변수에 대입할  있습니다. 조회되는 행은 하나이어야 하며, 조회하는 칼럼에 따라 순서, 개수, 데이터 타입을 맞춰주어야 합니다. 또한 SELECT 이외에도 INSERT, UPDATE, MERGE, DELETE문도 사용 가능합니다.

반응형