레이블이 PLSQL변수인 게시물을 표시합니다. 모든 게시물 표시
레이블이 PLSQL변수인 게시물을 표시합니다. 모든 게시물 표시

2020년 7월 18일 토요일

오라클, PL/SQL 변수, 데이터 타입

3.1 변수, 데이터타입

[형식]

변수이름 [Constant] 데이터타입 [NOT NULL] [:= | Default 수식]

n Pl/SQL BEGIN ~ END 안에서 사용할 변수들은 DECLARE 섹션에서 정의하며 변수명은 오라클 오브젝트명과 동일한 네이밍룰을 따른다.

n NOT NULL로 정의한 변수는 값이 반드시 값이 입력되야 하므로 기본값을 주거나 초기값을 할당해야 하는데 초기값은 할당 연산자(:=)를 사용하여 부여한다.

sal number(5) not null := 0;

sal number(5) not null default 0;

n 상수를 정의하기 위해서는 CONSTANT 키워드를 사용하고 반드시 초기값을 부여해야 한다.

v_max_sal CONSTANT NUMBER(9) := 999999999;

3.1.1 Scalar Data Type

한가지 타입의 값을 가지는 변수로써 Numeric, Character, Boolean, Datetime 계열이 있다.

[Numeric 계열]

PLS_INTEGER or BINARY_INTEGER

부호있는 4바이트 정수표시 -2,147,483,648 ~ 2,147,483,647, PLS_INTEGER가 저장공간을 적게 차지하고 BINARY_INTEGER보다 빠르다

NUMBER

고정/부동 소수점 숫자 표현

[Character 계열]

CHAR

32,767 바이트까지 표시하는 고정길이 문자열

VARCHAR2

32,767 바이트까지 표시하는 가변길이 문자열

LONG

32,767 바이트까지 표시하는 가변길이 문자열

LONG RAW

32,767 바이트까지 표시하는 가변길이 바이너리데이터, PL/SQL에서는 해석되지 않는다.

ROWID

물리적인 레코드를 나타내는 식별자

[Datetime 계열]

YEAR

-4712 to 9999 사이의 연도를 표시

MONTH

DAY

HOUR

MINUTE

SECOND

DATE

날짜 및 시각을 표시

[Boolean 계열]

BOOLEAN

논리값인 TRUE or FALSE를 표시

SQL> edit ojc5

-- CHAR TYPE의 비교예제

-- 작은쪽을 큰쪽과 같이 늘여 사이즈를 맞춘 후 비교

SET SERVEROUTPUT ON

DECLARE

name1 CHAR(5) := 'OJC'; -- 공백없음

name2 CHAR(10) := 'OJC '; -- 뒤부분에 공백있음

BEGIN

IF name1 = name2 THEN

DBMS_OUTPUT.PUT_LINE(name1 || ' = ' || name2);

ELSE

DBMS_OUTPUT.PUT_LINE(name2 || ' != ' || name1);

END IF;

END;

/

SQL> @ojc5

OJC = OJC

SQL> edit ojc6

/* VARCHAR2 TYPE의 비교예제

비교대상 한쪽이라도 VARCHAR2라면 CHAR와 달리 공백을

채우지 않고 비교(작은쪽을 늘이지않는다)

그러므로 아래 두 값은 같지않다.

*/

SET SERVEROUTPUT ON

DECLARE

name1 VARCHAR2(5) := 'OJC'; -- 공백없음

name2 VARCHAR2(5) := 'OJC '; -- 뒤부분에 공백있음

BEGIN

IF name1 = name2 THEN

DBMS_OUTPUT.PUT_LINE(name1 || ' = ' || name2);

ELSE

DBMS_OUTPUT.PUT_LINE(name2 || ' != ' || name1);

END IF;

END;

/

SQL> @ojc6

OJC != OJC

SQL> edit ojc7

/* VARCHAR2, CHAR TYPE의 비교예제

비교대상 한쪽이라도 VARCHAR2라면 CHAR와 달리 공백을

채우지 않고 비교(작은쪽을 늘이지않는다)

그러므로 아래 두 값은 같지않다.

*/

SET SERVEROUTPUT ON

DECLARE

name1 VARCHAR2(10) := 'OJC'; -- 공백으로 채우지 않는다.

name2 CHAR(10) := 'OJC'; -- 나머지 7자리는 공백으로 채움

BEGIN

IF name1 = name2 THEN

DBMS_OUTPUT.PUT_LINE(name1 || ' = ' || name2);

ELSE

DBMS_OUTPUT.PUT_LINE(name2 || ' != ' || name1);

END IF;

END;

/

SQL> @ojc7

OJC != OJC

(C#교육동영상)C# ADO.NET 실습 ODP.NET/ODAC 설치 오라클 함수 호출 실습, C#학원, WPF학원, 닷넷학원, 자바학원

  (C#교육동영상)C# ADO.NET 실습  ODP.NET/ODAC 설치  오라클 함수 호출 실습, C#학원, WPF학원, 닷넷학원, 자바학원 https://www.youtube.com/watch?v=qIPU85yAlzc&list=PLxU-i...