[본문스크랩] PL/SQL (2) - 데이터형

오라클 | 2007. 12. 21. 15:26
Posted by 시반

###################################################################################################

#   source site : blog.naver.com/tangamjaelt

#   master : 강용운

#   email : tangamjaelt@korea.com

#   last release : 2007.05.01

###################################################################################################

 

데이터형 (datatype)

- PL/SQL 에서 블럭은 프로그래밍의 기본 단위이다.

- 블럭은 프로그램 코드와 변수 선언문을 둘 다 갖고 있다.

 

스칼라 변수

VARCHAR2

가변 길이 문자 스트링

CHAR

고정 길이 문자 스트링

NUMBER

고정 소수점 또는 부동 소수점 숫자

DATE

날짜

BOOLEAN

TRUE/FALSE

 

변수 명명 규칙

① 변수이름은 문자,$,_,# 으로 구성된다.

② 변수이름은 반드시 문자로 시작한다.

③ 변수이름은 최대 30자이다.

④ 변수이름은 대소문자를 구분하지 않는다.

⑤ 알아보기쉽게 쓴다.  (empyearsal → emp_year_sal → Emp_Year_Sal)

⑥ 변수, 함수, 프로시저 이름등을 쉽게 구분하기 위해 예약어는 대문자만 사용하는 경우도 있다.

 

변수선언

student_id VARCHAR(16);

student_name VARCHAR2(10000);

 

변수에 값 할당

student_id := 'kangyw';

student_name := 'Kang Yong Woon';

 

CHAR 와 VARCHAR 차이점

- CHAR 는 고정된 길이의 데이터를 저장. 빈공간은 공백으로 채워짐. (ex. 학번,사번,주민번호 등 정해진 길이)

   스트링 비교를 할 경우, 공백도 1byte로 계산됨.

- VARCHAR 는 정해지지 않은 길이의 데이터를 저장하는데 사용됨.

 

 

[예제1] CHAR는 VARCHAR의 차이점.

 

$ vi /export/home/oracle/plsql/test_35p.sql

 

********************************************************************************************************************

DECLARE

         student_id CHAR(20);

         student_name VARCHAR(20);

BEGIN

         student_id := 'kangyw';

         student_name := 'kangyw';

 

         IF

                  student_id = student_name;

         THEN

                  DBMS_OUTPUT.PUT_LINE('Same');

         ELSE

                  DBMS_OUTPUT.PUT_LINE('Not Same');

         END IF;

END;

/

********************************************************************************************************************

 

SQL> SET SERVEROUTPUT ON

SQL> @/export/home/oracle/plsql/test_35p

 

 

- CHAR 와 VARCHAR 모두 20 byte를 할당 받지만,

- CHAR는 kangyw 을 사용하고 남은 14byte를 공백으로 채우고, VARCHAR 는 6 byte만 사용하고 14 byte는 사용하지 않는다.

- 공백을 무시하고 비교하기 위해서는 rtrim 함수를 사용한다.

 

 

[예제2] RTRIM 을 사용하여 문자 비교하기 (우측 공백 제거 함수)

 

$ vi /export/home/oracle/plsql/test_36p.sql

 

********************************************************************************************************************

DECLARE

         student_id CHAR(20);

         student_name VARCHAR(20);

BEGIN

         student_id := 'kangyw';

         student_name := 'kangyw';

 

         IF

                  RTRIM(student_id) = student_name;

         THEN

                  DBMS_OUTPUT.PUT_LINE('Same');

         ELSE

                  DBMS_OUTPUT.PUT_LINE('Not Same');

         END IF;

END;

/

********************************************************************************************************************

 

 

- 공백을 제거하니 Same 이라는 결과가 나온다.

 

 

NUMBER

- 고정 소수점과 부동 소수점 숫자를 정의

- 범위 : 1.0E-123 ~ 9.99E125 까지

- 정밀도 : 몇 자리를 사용할 것인지 표시

- 스케일 : 소수점의 위치를 표시

- 형식 : 변수명 NUMBER [(정밀도[,스케일])]

            예) NUMBER(4,2) ▶ 4자리 수이고 소수점은 오른쪽 2번째에 온다. 

                                         73.127 을 입력하면 반올림이 되어 73.13 이 나온다.

            예) NUMBER(3) ▶ 기본스케일 0. 정수로 표시되고, 소수 첫째자리에서 반올림 된다. 

                                       345.1 을 입력하면 345 로 표시된다. -345.12 를 입력하면 -345 로 표시된다.

            예) NUMBER(5,-2) ▶ 스케일이 음수로 표시되면 정수쪽으로 반올림이 발생한다.

                                           10345 을 입력하면 100단위로 끊어져, 10300 이 나온다. 주식 100주 단위로 표시할 때 사용.

 

[예제3] NUMBER

 

********************************************************************************************************************

DECLARE

        number1 NUMBER(4,2);

        number2 NUMBER(3);

        number3 NUMBER(5,-2);

BEGIN

        number1 := 73.127;

        number2 := 345.1;

        number3 := 10345;

 

        DBMS_OUTPUT.PUT_LINE(number1);

        DBMS_OUTPUT.PUT_LINE(number2);

        DBMS_OUTPUT.PUT_LINE(number3);

END;

/

********************************************************************************************************************

 

 

 

DATE

- 날짜와 시간값을 저장

- 기본적으로 날짜,시간이 항상 포함된다.

- 시간을 지정하지 않으면 자정으로 표시. (am 12.:00:00)

- 범위 : BC 471년 1월 1일 ~ AD 4712년 12월 31일 까지

- 시간을 빼고 날짜만 비교하려면 TRUNC 함수를 사용한다.

 

[예제4] DATE

 

********************************************************************************************************************

DECLARE

        birthday DATE;

BEGIN

        birthday := TO_DATE('28-DEC-1982', 'DD-MON-YYYY');

        DBMS_OUTPUT.PUT_LINE(birthday);

END;

/

********************************************************************************************************************

 

 

 

 
블로그 이미지

시반

시반(詩伴)이란 함께 시를 짓는 벗이란 뜻을 가지고 있습니다. 함께 나눌수 있는 그런 공간이길 바라며...

카테고리

분류 전체보기 (233)
개발 이야기 (73)
WEB2.0 (57)
DB2 (24)
MySQL (6)
오라클 (26)
기타 (44)
취미 (0)
잡담 (2)