Oracle PL/SQL 강좌
스칼라 데이터 타입 14 33 92,747

by 김정식 스칼라 데이터 타입 CONTANT %TYPE VARCHAR2 BINARY_INTEGER [2002.01.20]


스칼라 데이터타입에는 일반 단일 데이터타입의 변수%TYPE 데이터형 변수가 있다.

일반변수 선언 문법

  • - Identifier(변수)의 이름은 sql의 object명과 동일한 규칙을 따른다.
  • - Identifier를 상수로 지정하고 싶은 경우는 CONSTANT라는 KEYWORD를 명시하고 반드시 초기값을 할당 한다.
  • - NOT NULL이 정의되어 있으면 초기값을 반드시 지정하고, 정의되어 있지 않을 때는 생략 가능하다.
  • - 초기값은 할당 연산자(:=)를 사용하여 정의 한다.
  • - 초기값을 정의하지 않으면 Identifier는 NULL값을 가지게 된다.
  • - 일반적으로 한 줄에 한 개의 Identifier를 정의 한다.

일반변수 선언 예제

 
-- 숫자형 상수 선언(변할 수 없다)
v_price CONTANT NUMBER(4,2) := 12.34 ;     

v_name VARCHAR2(20) ; 

v_Bir_Type  CHAR(1) ; 

-- NOT NULL의 TRUE로 초기화 
v_flag  BOOLEAN  NOT NULL := TRUE ;      

v_birthday DATE;
    

%TYPE 데이터형

  %TYPE 데이터형은 기술한 데이터베이스 테이블의 컬럼 데이터 타입을 모를 경우 사용할 수 있고, 코딩이후 데이터베이스 컬럼의 데이터 타입이 변경될 경우 다시 수정할 필요가 없다.

  이미 선언된 다른 변수나 데이터베이스 컬럼의 데이터 타입을 이용하여 선언 한다.

  데이터베이스 테이블과 컬럼 그리고 이미 선언한 변수명이 %TYPE앞에 올수 있다.

%TYPE 속성을 이용하여 얻을 수 있는 장점
  • - DB column definition을 정확히 알지 못하는 경우에 사용할 수 있다.
  • - DB column definition이 변경 되어도 다시 PL/SQL을 고칠 필요가 없다.

%TYPE 사용 예제

 
SQL> CREATE OR REPLACE PROCEDURE Emp_Info
      -- IN Parameter 
      ( p_empno IN emp.empno%TYPE )

        IS

        -- %TYPE 데이터형 변수 선언 
        v_empno emp.empno%TYPE; 
        v_ename emp.ename%TYPE;
        v_sal   emp.sal%TYPE;

        BEGIN

        DBMS_OUTPUT.ENABLE;

        -- %TYPE 데이터형 변수 사용 
        SELECT empno, ename, sal
        INTO v_empno, v_ename, v_sal  
        FROM emp
        WHERE empno = p_empno ;

        -- 결과값 출력 
        DBMS_OUTPUT.PUT_LINE( '사원번호 : ' || v_empno ); 
        DBMS_OUTPUT.PUT_LINE( '사원이름 : ' || v_ename );
        DBMS_OUTPUT.PUT_LINE( '사원급여 : ' || v_sal );

        END;
       /

-- DBMS_OUTPUT 결과값을 화면에 출력 하기위해
SQL> SET SERVEROUTPUT ON;     

-- 실행 결과 
SQL> EXECUTE Emp_Info(7369); 

사원번호 : 7369
사원이름 : SMITH
사원급여 : 880
    

- 강좌 URL : http://www.gurubee.net/lecture/1044

- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^

- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.

by 멋져요.. [2004.10.28 16:50:13]
공부 잘하고 있습니다..
감사합니다.

by 존경 [2005.03.16 12:19:25]
정말 너무나 유익한 정보 감사합니다. 나중에 술이라도 한잔 사드려야겠네요 ^^

by 정미나 [2005.07.22 17:21:27]
찾아헤매던 유익한 정보 입니다. 감사합니다.
앞으로 계속 부탁드립니다.

by 무식아 [2005.10.25 10:43:18]
SET SERVEROUTPUT ON; 를 프로시저 안에 포함시킬수는 있는지요?

by 하수코더 [2006.03.20 10:43:49]
v_name VARCHAR22(20) ; <== 오타 수정 요~

by 걸음마 [2006.03.23 16:29:15]
하하하.. 첨으루 답변을 해보네요~
이런기분 첨이에여~^^

v_name VARCHAR22(20) -> v_name VARCHAR2(20)

by 이상민 [2006.04.18 17:54:06]
좋은글 감사합니다.^^

by 양재상 [2006.05.14 14:00:37]
강좌 번호중에 "3.1" 이 없어요

by songnick [2006.09.04 21:35:19]
선언예제중에 CONSTANT 문장에 S가 빠졌네여.유용한 정보 고맙습니다.

by ari [2006.10.26 14:27:09]
%type 사용시 단점은???

by jsf [2007.03.19 01:26:11]
단점은 없는가 봅니다.

by 김동진 [2007.04.11 16:45:23]
잘 보았습니다. 수고 많으시네요

by 디스타임 [2007.11.05 14:34:38]
%type 은 테이블내 컬럼의 데이터타입을 쓴다는 의미니 단점같은건 없을 것 같네요. 그래서 타입이 변해도 고칠필요 없으니 편한거고 ^^

by 김윤경 [2007.11.08 11:21:39]
재미있게 학습하고 있어요.
%type 이 단점이 없다면 적극 사용해야겠어요;;;

by 갱 [2008.03.10 08:54:24]
%type은 이렇게 간단한 프로그램에선 효과적으로 사용할 수 있으나,
복잡한 프로그램에서 사용시 %type이 무슨 타입인지 몰라 헤매는 경우가 종종 생길수 있습니다. 그러한 경우엔 코드를 찾아봐야 하는 단점이 있죠..

by 까비르 [2008.03.20 18:33:29]
가시적으로 다른사람이 봤을때나 내가 처음봤을때도 형을 지정해주는것이
이해가 빠를꺼라고봅니다. 여라가지 형태가 들어가거나 바뀌는경우
주석같은거로 처리해서 알려주면 될꺼같네요

by 무리 [2008.04.29 23:10:27]
단점은
열코딩 했는데 친구가 불러 나가서 술한잔 하고 돌아오니
%type 생각안나 첨부터 다시.

by 우주해적하록 [2008.05.29 13:53:56]
무리님이 말씀하신 단점이 너무 큰데요? ㅋㅋㅋㅋㅋㅋ

by 돌 [2008.07.21 22:19:29]
지금 20살인데 보면 그럭저럭 하지만 +_+

이해가 안되네요 ㅠㅠ

그러나 좋은 정보에 감사드립니다

by 지나가던이 [2009.02.13 17:43:29]
스칼라 변수는 편하지만 스칼라 변수를 사용한 테이블이 수정되면 컴파일되어있던 관련 프로시져들은 자동으로 정지상태가 되더군요. 옵션으로 자동 사용 가능 되는지는 모르겠습니다만...

by 지나가던이 [2009.02.13 17:45:43]
데이타 형을 지정하는것은 메인터넌스에 그다지 좋지 않을 것이라 생각됩니다. 테이블 컬럼 변경에 따른 리스크가 너무 커져버립니다. 되도록 스칼라 변수를 사용하는게 맞지 않나....조심스럽게 제안해 봅니다.

by 근데 [2011.02.15 01:21:17]
%type을 쓰는게 경험상 좀더 안전합니다.
요새 프로젝트는 대부분의 컬럼을 사전에서 유추합니다.
대부분 비슷한 규칙을 지닐수 있고, 이름만봐도 타입을 알수있으니깐요.

by PL남 [2011.06.06 09:43:09]
SET SERVEROUTPUT ON 은 SQL문이 아니라 SQL*PLUS 가 제공하는 거라 ..
프로시져 내부에서 사용할수 없어요 .

by KATE [2011.06.17 09:17:33]
중요한 POINT를 아주 쉽게 잘 정리하시네요..존경스럽네요.

by 쫑 [2012.02.03 10:34:03]
대단하세요^^

by 돌이맹이 [2012.02.28 15:33:54]
잘 봤습니다.

by 손님 [2012.10.31 14:00:14]
 보면 그럭저럭 알것 같았는데 좀지나면 다까먹었는데  한번 써보면서 하나씩 풀어보니까 이해가 잘되네요 감사합니다 ^^

by 열혈성민 [2013.01.23 11:33:38]
헤헤 잘되네요

by 아수라다 [2013.08.01 21:58:17]

정말 좋은 자료 감사합니다.^^

by 황구씨 [2015.02.27 10:34:01]

잘 참조하겠습니다 감사합니다! 


by 상유니 [2015.08.12 19:53:06]

PL/SQL 강좌 기대됩니다.

근데 오타네영. CONTANT 가 아니라 CONSTANT. 어차피 다들 아시겠지만 끄적여봅니다 ㅎㅎ


by 크레이지황 [2016.04.03 21:04:21]

감사합니다.


by 돼지가웃통벗는날 [2018.01.17 15:55:25]

%TYPE 이해가 바로 되었습니다. 감사합니다!

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입