본문 바로가기

DB관련/oracle

PL/SQL -2 스칼라 변수

A>렉시칼 : 문자 집합

    PL/ SQL 렉시칼: pl/sql 안에서 사용되는 문자 집합들

                     ex)식별자, 구분자 ,리터럴 등....

 

1.따옴표가 쓰일때

   식별자의 대소문자 구분이 필요할 때,

   공백 같은 문자가 포함될 경우

   예약어 사용시

 

 

B>중첩된 PL/SQL 블록 작성하기

 

예시1. 변수의 스코프

DECLARE
    v_first VARCHAR2(5) := 'Outer';     --자바로 따지면 전역변수
    BEGIN
    DECLARE  
        v_second VARCHAR2(5) := 'Inner'; --자바로 따지면 지역변수
    BEGIN
    DBMS_OUTPUT.PUT_LINE(v_first);
    DBMS_OUTPUT.PUT_LINE(v_second);
    END ;
DBMS_OUTPUT.PUT_LINE(v_first);
DBMS_OUTPUT.PUT_LINE(v_second);   --얘는 변수의 스코프를 벗어난 셈. 오류가 일어남
END ;
DBMS_OUTPUT.PUT_LINE(v_second);

 

 

C> 변수의 제약

     - 반드시 문자로 시작

     - 문자, 숫자, 특수문자 안됨

     - 30byte 이하

     - 예약어로 불가

 

 

D> 변수의 종류

 1.단순 변수

   - 스칼라 변수 

   - 참조 변수

 

1-1. scalar  변수

     - 상수로 만드려면 CONSTANT 붙임면 됨 , 선언과 동시에 초기화 필요

       ex)  변수이름 CONSTANT 타입 := 초기화 값

         

       - 타입의 지정 %TYPE : 테이블 내 칼럼과 동일한 타입 선언

       - 동일한 행 선언 %ROWTYPE

         EX) test테이블의 칼럼이 t1 number, t2 varchar2(10), t3 number 일때

             test%ROWTYPE 이면  하나의 변수에 test의 칼럼을 모두 저장하는 변수로 선언됨

 

   -변수 선언과 동시에 제약조건도 삽입 가능

       ex) 식별자 타입 [제약조건] :=

 

   -기본값  정의

          ex) 식별자 타입 DEFAULT 기본값 :=

 

 1-2. rowtype 예시

--emp3 테이블 생성

create table emp3 AS SELECT empno,ename,sal FROM emp;

 

--emp3 에 대한 pl/sql

DECLARE

        v_row emp3%ROWTYPE;

BEGIN

        SELECT * INTO v_row FROM emp3

        WHERE empno=7900;

DBMS_OUTPUT.PUT_LINE(v_row.empno||'**'||v_row.ename||'**'||v_row.sal);

END;

/

 

 

1-3.  rowtype 으로 레코드 복제하기

DECLARE
    v_record row_test%ROWTYPE;
BEGIN
    SELECT * INTO v_record
    FROM row_test
    WHERE no=1;
    
    INSERT INTO row_test2
    VALUES v_record;
END;
/

 

 

1-4. rowtype을 이용해 행 수정하기

DECLARE

        v_record row_test%ROWTYPE;

BEGIN

        SELECT * INTO v_record

        FROM row_test WHERE no=1;

        v_record.name :='DDD';

        UPDATE row_test

        SET row = v_record    --한 row에다 row정보를 가지고 있는 v_record 정보 삽입

        WHERE no=1;

END;

'DB관련 > oracle' 카테고리의 다른 글

PL/SQL -4 CURSOR  (0) 2021.01.21
PL/SQL 3- 복합 변수, 제어문  (0) 2021.01.20
PL/SQL -1  (0) 2021.01.20
복수행 함수 - 연산 함수와 그룹함수  (0) 2021.01.15
일반 함수(nvl, nvl2, decode)  (0) 2021.01.15