■ Data Skill ■/PL-SQL

PL/SQL (2) - 데이터형

한길(One Way) 2023. 3. 17.

데이터형 (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 := 'kangyw';

 

CHAR 와 VARCHAR 차이점

- CHAR 는 고정된 길이의 데이터를 저장.

빈공간은 공백으로 채워짐.

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

(ex. 학번, 사번, 주민번호 등 정해진 길이)

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

 

 

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

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

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 을 사용하여 문자 비교하기 (우측 공백 제거 함수)

*************************************************************************************************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-12-1982', 'DD-MM-YYYY');

DBMS_OUTPUT.PUT_LINE(birthday);

END;

/

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

728x90

'■ Data Skill ■ > PL-SQL' 카테고리의 다른 글

PL/SQL (6) - 패키지 사용의 예  (0) 2023.03.17
PL/SQL (5) - 함수 (Function)  (0) 2023.03.17
PL/SQL (4) - 연산자  (0) 2023.03.17
PL/SQL (3) - 블럭 구조  (0) 2023.03.17
PL/SQL (1) - 개념과 예제  (1) 2023.03.17

댓글