pl sql data types variables
이 자습서에서는 프로그래밍 예제를 통해 PL SQL 데이터 유형, 변수, 상수 및 리터럴이 무엇인지 자세히 설명합니다.
의 이전 자습서에서 PL / SQL 시리즈 에서 PL / SQL의 기능과 기본 구문을 예제로 소개했습니다.
이 기사에서는 PL / SQL이 지원하는 다양한 데이터 유형에 대해 설명합니다. 또한 PL SQL에서 광범위하게 사용되는 변수와 상수를 살펴 보겠습니다.
PL / SQL 리터럴도 중요하며이 튜토리얼에서 실용적인 사용법과 함께 이에 대해 배웁니다.
학습 내용 :
Pl SQL 데이터 유형
PL / SQL의 모든 변수, 상수, 매개 변수에는 값 범위, 제약 조건 및 저장 형식을 정의하는 특정 데이터 유형이 있습니다. PL / SQL에는 LOB, Scalar, Reference 및 Composite라고도하는 Large Object와 같은 데이터 유형이 포함되어 있습니다.
스칼라 데이터 유형
먼저 다음으로 구성된 스칼라 데이터 유형에 대해 설명하겠습니다.
- 숫자 수학적 연산이 수행되는 값을 처리하는 데이터 유형.
- 부울 논리 연산이 수행되는 값을 처리하는 데이터 유형.
- 캐릭터 영숫자로 구성된 값을 처리하는 데이터 유형.
- 날짜 시간 데이터 유형.
숫자 데이터 유형
PL / SQL의 숫자 데이터 유형은 다음으로 구성됩니다.
- BINARY_FLOAT
- BINARY_INTERGER
- PLS_INTEGER
- BINARY_DOUBLE
- 소수
- 숫자
- 번호
- 흙손
- INT
- 정수
- 이중 정밀도
- 레알
- SMALLINT
- DEC
숫자 데이터 유형이있는 코드 스 니펫 :
DECLARE numA INTEGER := 10; numB NUMBER(10) := 10.8; numC DOUBLE PRECISION := 10.6; BEGIN dbms_output.put_line('The numA is: ' || numA); dbms_output.put_line('The numB is: ' || numB); dbms_output.put_line('The numC is: ' || numC); END; /
위의 코드에는 각각 변수 numA, numB 및 numC가있는 INTEGER, NUMBER 및 DOUBLE PRECISION 데이터 유형이 있습니다. numB에는 정밀도가 10 인 숫자 데이터 유형이 있으며 10 진수 뒤에는 숫자가 없습니다.
위 코드의 출력은 다음과 같아야합니다.
문자 데이터 유형
PL / SQL의 문자 데이터 유형은 다음과 같이 구성됩니다.
# 1) VARCHAR2 : 이 데이터 유형은 문자열을 저장하지만 문자열 길이는 선언시 고정되지 않습니다. varchar2의 최대 크기는 32767 바이트입니다. varchar2 데이터베이스 열의 최대 너비는 4000 바이트입니다.
통사론:
test VARCHAR2 (20) : =‘SoftwareTest’;
# 2) CHAR : 이 데이터 유형은 문자열을 저장하지만 문자열 길이는 선언시 고정됩니다. 문자의 최대 크기는 32767 바이트입니다. char 데이터베이스 열의 최대 너비는 2000 바이트입니다.
통사론:
test CHAR2 (20) : =‘SoftwareTest’;
# 3) NCHAR : CHAR와 유사하지만 국가 별 문자 집합 만 저장합니다. NCHAR의 최대 크기는 32767 바이트입니다. NCHAR 데이터베이스 열의 최대 너비는 2000 바이트입니다.
통사론:
테스트 NCHAR2 (20);
# 4) 오래 : 이것은 가변 길이 문자열을 저장합니다. long의 최대 크기는 32760 바이트입니다.
통사론:
LONG 테스트;
# 5) 긴 줄 : 이진 형식 또는 바이트 문자열로 데이터를 저장합니다. 긴 행의 최대 크기는 32760 바이트입니다.
DVD를 하드 드라이브에 무료로 복사
통사론:
긴 행 테스트;
# 6) ROWID : 이것은 일반 테이블에서 행의 주소를 가리키는 행의 물리적 식별자입니다.
# 7) UROWID : 행의 범용 식별자입니다.
# 8) NVARCHAR2 : 이는 VARCHAR2와 유사하지만 국가 별 문자 집합 만 저장합니다. nvarchar2 데이터베이스 열의 최대 너비는 4000 바이트입니다.
# 9) VARCHAR : 이것은 VARCHAR2와 유사합니다.
통사론:
test VARCHAR2 (20) : =‘SoftwareTest’;
이제 표 형식의 PL / SQL 문자 데이터 유형에 대해 설명하겠습니다.
Sl 아니. | 데이터 형식 | 기술 |
---|---|---|
7 | 긴 | 이것은 LONG과 유사합니다. 이 데이터는 PL / SQL에서 해석되지 않습니다. |
하나 | VARCHAR2 | 가변 길이의 문자 데이터를 저장하는 데 사용됩니다. 변수의 크기는 선언시 설정됩니다. 효과적인 메모리 사용을 위해 항상 VARCHAR2를 사용하는 것이 좋습니다. |
두 | 숯 | 길이가 고정 된 문자 데이터를 저장하는 데 사용됩니다. 변수의 크기는 선언시 설정됩니다. 고정 크기 데이터를 사용할 때는 항상 CHAR를 사용하는 것이 좋습니다. |
삼 | VARCHAR | 이것은 VARCHAR2와 유사합니다. 코드 구현 중에는 항상 VARCHAR을 사용하는 것이 좋습니다. |
4 | NCHAR | 고정 길이 국가 문자 데이터 인 문자 데이터를 저장하는 데 사용됩니다. 문자 집합은 UTF 8 또는 UTF 16입니다. 항상 CHAR를 NCHAR로 변환하는 것이 좋습니다. 그러나 NCHAR를 CHAR로 변환하면 데이터가 잘릴 수 있습니다. |
5 | NVARCHAR2 | 가변 길이 국가 문자 데이터 인 문자 데이터를 저장하는 데 사용됩니다. 이것은 VARCHAR2와 유사합니다. 문자 집합은 UTF 8 또는 UTF 16입니다. 항상 VARCHAR2를 NVARCHAR2로 변환하는 것이 좋습니다. 그러나 NVARCHAR2를 VARCHAR2로 변환하면 데이터가 잘릴 수 있습니다. |
6 | 긴 | 이것은 데이터 사전에서 사용됩니다. 이것은 주로 문자 집합 데이터에 사용됩니다. |
부울 데이터 유형
이러한 PL / SQL 데이터 유형은 논리 값을 저장하는 데 사용할 수 있습니다. TRUE, FALSE 및 NULL은 부울 값입니다.
SQL에는 BOOLEAN 데이터 유형이 없습니다. 따라서 다음 시나리오에서는이를 피해야합니다.
- SQL에서 생성 된 PL / SQL 문.
- PL / SQL의 기본 기능.
- 일반 SQL 문.
통사론:
test Boolean;
테스트 변수의 출력은 특정 기준에 따라 TRUE 또는 FALSE가됩니다.
날짜 시간 데이터 유형
이러한 데이터 유형은 날짜 및 시간의 일정한 길이에 사용됩니다. 적절한 날짜 범위는 BC 4712 년 1 월 1 일부터 AD 9999 년 12 월 31 일까지 시작되며 시간은 초 단위로 정의됩니다. 기본 제공 날짜 형식은 DD-MON-YY로, 월의 일, 간단히 월 이름, 연도의 마지막 두 자리에 할당 된 두 자리 숫자를 의미합니다.
DATE는 초, 분, 일,시, 월, 연도 및 세기로 구성됩니다. 이러한 각 필드에는 아래와 같이 정의 된 특정 범위가 있습니다.
- 둘째: 00 ~ 59.9 범위에서 정의됩니다.
- 분: 00 ~ 59 범위로 정의됩니다.
- 시: 00 ~ 23 범위에서 정의됩니다.
- 일: 01에서 31까지의 범위로 정의됩니다.
- 달: 01에서 12까지의 범위에서 정의됩니다.
- 년: -4712에서 9999 (0 제외) 범위로 정의됩니다.
- TIMEZONE_HOUR : -12에서 14까지의 범위로 정의됩니다.
- TIMEZONE_MINUTE : 00 ~ 59 범위로 정의됩니다.
- TIMEZONE_REGION
- TIMEZONE_ABBR
통사론:
TIMESTAMP '1990-06-04 9:00:00 US/Pacific' TIMESTAMP '1990-06-04 01:30:00 US/Pacific PDT'
여기에서는 기호를 사용하여 시간대를 설명했습니다. US / Pacific 또는 PDT 사양은 특정 시간대를 정의하는 데 사용됩니다. PDT 양식은 일광 절약 시간 제로 전환하는 동안 지침을 제공하기 때문에 주로 사용됩니다.
LOB 데이터 유형
이제 비디오, 사운드, 그래픽, 이미지 등으로 구성된 엄청난 양의 데이터를 처리하는 LOB 데이터 유형에 대해 설명하겠습니다.
LOB 데이터 유형은 긴 데이터 유형에 비해 많은 이점이 있습니다. 아래에 나열되어 있습니다.
- Long은 2GB를 수용 할 수있는 반면 LOB는 128TB를 수용 할 수 있습니다.
- 테이블에는 LONG 유형의 단일 열이있을 수있는 반면 LOB 데이터 유형의 열은 여러 개일 수 있습니다.
- LOB 데이터 유형은 Oracle에서 지속적으로 개선 및 업데이트되고 있지만 LONG 데이터 유형에는 많은 개선 및 업데이트가 없습니다.
LOB 데이터 유형은 다음과 같습니다.
- BFILE : 이것은 비정형 데이터를 운영 체제 파일로 데이터베이스에서 바이너리 형식으로 보유하는 데 사용됩니다.
- NCLOB : 이것은 데이터베이스에 거대한 NCHAR 데이터를 보유하는 데 사용됩니다.
- CLOB : 이것은 데이터베이스에 문자 유형의 방대한 데이터를 보유하는 데 사용됩니다.
통사론:
바이너리 CLOB;
- 얼룩: 이것은 데이터베이스에 거대한 이진 데이터를 보유하는 데 사용됩니다.
통사론:
바이너리 BLOB;
일부 데이터 유형을 사용한 코드 구현 :
DECLARE m CHAR(20) := 'softwareTest!'; n VARCHAR2(30) := 'plsql'; o NCHAR(30) := 'plsql datatypes'; p NVARCHAR2(30) := 'plsql literals'; presentDt DATE:= SYSDATE; a INTEGER := 16; b NUMBER(20) := 11.2; c DOUBLE PRECISION := 14.7; BEGIN dbms_output.put_line('The char datatype is: ' || m); dbms_output.put_line('The varchar datatype is: ' || n); dbms_output.put_line('The nchar datatype is: ' || o); dbms_output.put_line('The nvarchar2 datatype is: ' || p); dbms_output.put_line('The current date is: ' || presentDt); dbms_output.put_line('The number a is: ' || a); dbms_output.put_line('The number b is: ' || b); dbms_output.put_line('The number c is: ' || c); END; /
위 코드의 출력은 다음과 같아야합니다.
PL SQL 변수
PL / SQL 변수 이름은 30 자 이하의 영숫자로 구성된 명명 규칙을 따릅니다. PL / SQL은 대소 문자를 구분하지 않으며 키워드를 변수로 사용해서는 안됩니다.
변수 이름은 의미가 있어야하며 뒤에 밑줄 (_), 숫자 또는 달러 ($)가 올 수 있습니다.
PL SQL 변수 선언
PL / SQL의 변수는 선언 영역에서 사용 가능하거나 패키지에 전역 변수로 존재해야합니다. PL / SQL은 변수를위한 메모리를 예약하고 저장 위치는 변수 이름으로 정의됩니다.
변수 선언 구문 :
variable_name (CONSTANT) datatype (NOT NULL) (:= | DEFAULT initial_value)
여기서 variable_name은 인증 된 PL / SQL 식별자이며 데이터 유형은 사용자 정의 또는 확인 된 PL / SQL 데이터 유형일 수 있습니다.
변수 선언을위한 코드 구현 :
DECLARE v_namis VARCHAR2(10); n_addressis NUMBER(10,3); BEGIN dbms_output.put_line('The name is: ' || v_namis); dbms_output.put_line('The address is: ' || n_addressis); END;
위 코드의 출력은 다음과 같아야합니다.
참고, 우리는 숫자 데이터 유형의 정밀도와 크기를 모두 언급했습니다. 이를 제한 선언이라고합니다. 이러한 유형의 선언은 더 적은 메모리를 사용합니다.
PL / SQL 변수 초기화
기본적으로 PL / SQL은 변수 값을 NULL로 사용합니다. 그러나 NULL로 변수를 초기화하지 않으려면 DEFAULT 키워드 또는 할당 연산자를 사용하여 수행 할 수 있습니다.
통사론:
num integer := 50; test varchar(40) DEFAULT 'Software Test Help';
NOT NULL 제약 조건을 언급하여 변수에 NULL 값이 없어야 함을 정의 할 수도 있습니다. 그러나 NOT NULL 제약 조건을 사용하는 경우 변수 값을 설정해야합니다.
변수 초기화를 사용한 코드 구현 :
DECLARE v_namis VARCHAR2(40) := 'softwareTest!'; n_couris VARCHAR2(30) := 'plsql'; BEGIN dbms_output.put_line('The value is: ' || v_namis); dbms_output.put_line('The value is: ' || n_couris); END; /
위 코드의 출력은 다음과 같아야합니다.
할당 개념을 사용한 코드 구현 :
DECLARE v_namis VARCHAR2(40); n_couris VARCHAR2(30); BEGIN v_namis := 'softwareTest!'; n_couris := 'plsql'; dbms_output.put_line('The value is: ' || v_namis); dbms_output.put_line('The value is: ' || v_couris); END; /
여기서 할당 연산자 (=)는 변수에 값을 할당하는 데 사용됩니다.
위 코드의 출력은 다음과 같아야합니다.
PL / SQL 변수 범위
PL / SQL 블록은 내부 코드 블록을 가질 수 있습니다. 선언 된 변수가 내부 블록의 일부인 경우 외부 블록에서 사용할 수 없습니다. 그러나 외부 블록의 일부인 변수는 코드의 내부 블록에서 조작 할 수 있습니다.
이러한 유형의 변수는 아래에 설명되어 있습니다.
- 전역 변수 : 외부 블록 또는 패키지에서 선언 된 변수입니다.
- 지역 변수 : 코드의 내부 블록에서 선언되고 외부 블록에서 액세스 할 수없는 변수입니다.
전역 및 지역 변수를 사용한 코드 구현 :
DECLARE -- Global variables val number := 10; BEGIN dbms_output.put_line('Global variable is : ' || val); DECLARE -- Local variables val number := 100; BEGIN dbms_output.put_line('Local variable is: ' || val); END; END; /
위 코드의 출력은 다음과 같아야합니다.
참고 여기서 출력되는 Global 변수는 10 (글로벌 변수 val 때문에) 및 'Local variable is : 100 (로컬 변수 val 때문)입니다.
PL / SQL 앵커
PL / SQL 앵커는 % TYPE 키워드로 정의되어 테이블의 특정 열의 데이터 유형과 연결된 데이터 유형의 변수를 선언합니다.
앵커가있는 코드 스 니펫 :
DECLARE v_namis RESSIDENT.NAME%TYPE; n_addessis RESSIDENT.ADDRESS%TYPE; BEGIN NULL; END; /
여기에 RESIDENT 테이블이 있고 해당 테이블의 NAME 및 ADDRESS 열을 처리합니다.
PL / SQL의 상수
상수는 한 번 선언 된 값을 프로그램 전체에서 변경하지 않고 유지합니다.
PL / SQL 상수 선언
그만큼 일정한 키워드는 프로그램에서 상수를 정의하는 데 사용됩니다. 프로그램 전체에서 동일하게 유지되는 미리 정의 된 값으로 시작합니다.
변수 선언 구문 :
const_name CONSTANT data type := val
상수를 사용한 코드 구현 :
DECLARE -- Constant p constant number := 3.141592654; -- Radius declarations r number(10,1); a_circle number(10,3); BEGIN -- Area calculation r := 9.4; a_circle := p * r * r; -- Output in console dbms_output.put_line('Area of circle: ' || a_circle); END; /
위 코드의 출력은 다음과 같아야합니다.
PL SQL의 리터럴
PL / SQL 식별자로 정의되지 않은 부울, 숫자 또는 문자열 값을 리터럴이라고합니다. 리터럴은 대소 문자를 구분하며 다음과 같은 유형입니다.
- 부울 리터럴 ( 예를 들어 – FALSE, TRUE)
- 문자 리터럴 ( 예를 들어 –‘s’,‘7’,‘)’)
- 문자열 리터럴 ( 예를 들어 –‘소프트웨어 테스트’)
- 숫자 리터럴 ( 예를 들어 -78, 04, 6.3)
- 날짜 및 시간 리터럴 ( 예를 들어 -’25 -05-2012’)
자주 묻는 질문과 답변
질문 # 1) PL SQL의 데이터 유형은 무엇입니까?
대답: PL SQL 데이터 유형은 복합 및 스칼라입니다. 스칼라 데이터 유형은 Character, Number, Boolean 및 DateTime과 같은 단일 값을 보유 할 수 있습니다. 복합 데이터 유형은 콜렉션 및 레코드와 같은 둘 이상의 값을 저장합니다.
질문 # 2) PL / SQL 변수 란 무엇입니까?
대답: PL SQL 변수는 개발자가 프로그램 실행 중에 데이터를 임시로 저장하는 데 도움이되는 이름입니다. 저장 영역에 할당 된 의미있는 이름입니다. PL / SQL의 모든 변수는 특정 데이터 유형에 속합니다.
Q # 3) PL / SQL에서 날짜 매개 변수를 전달하는 방법은 무엇입니까?
대답: DATE 키워드를 사용하여 PL / SQL에서 날짜 매개 변수를 전달할 수 있습니다. 'YYYY-MM-DD'와 같은 고정 형식을 따릅니다.
질문 # 4) PL / SQL에서 상수를 어떻게 선언합니까?
대답: CONSTANT 키워드를 사용하여 PL / SQL에서 상수를 선언 할 수 있습니다. CONSTANT 뒤에 할당 된 값을 언급해야합니다. 이 값은 프로그램 내내 고정되어 있습니다.
질문 # 5) PL / SQL에서 사용할 수있는 리터럴 유형은 몇 개입니까?
대답: PL / SQL의 리터럴 유형은 Number, DateTime, Text 및 Integer입니다.
문 # 6) PL SQL 변수는 대소 문자를 구분합니까?
대답: 예약어를 포함하는 PL SQL 변수는 대소 문자를 구분하지 않습니다. 예를 들면 BEGIN과 begin은 모두 동일한 목적으로 사용됩니다.
결론
사용 된 다양한 데이터 유형과 그 중요성과 PL SQL의 변수와 같은 주제를 다루는 PL / SQL의 상당 부분은이 자습서를 읽은 후 이제 이해해야합니다.
또한 PL SQL 상수와 리터럴을 자세히 살펴 보았습니다. 각 주제를 하나씩 살펴보고 천천히 마스터하게됩니다. PL / SQL은 오늘날 웹 및 서버 개발을 위해 산업 분야에서 사용됩니다.
다음 자습서에서는 PL / SQL 삽입, 업데이트, 삭제, Select 문 및 기타 관련 항목에 대해 설명합니다.
더 많은 지식 공유를 위해 계속 지켜봐주십시오.