type of data
Scalar type (SCALAR, or basic data type): used to hold a single value, such as: string, number, date, boolean
Composite type (COMPOSITE): A composite type can store multiple values internally, similar to a collection of multiple variables, such as: record types, nested tables, index tables, variable arrays, etc. are called conforming types
Reference type (REFERENCE): used to point to another different object, for example: REF CURSOR, REF
LOB type: large data type, can store up to 4G of information, mainly used to process binary data;
Common Scalar Types
Numerical type: NUMBER ([total length of data, total length of decimal places) BINARY_INTEGER
char; VARCHAR2(length) ROWID
Date type: DATE, TIMESTAMP
Numeric data can store integers and floating-point numbers
Data Types -- Examples
Observe the difference between CHAR and VARCHAR2
DECLARE
v_info_char CHAR(10);
v_info_varchar VARCHAR2 (10);
BEGIN
v_info_char: = 'VDATA';
v_info_varchar: = 'VDATA';
DBMS_OUTPUT.put_line('v_info_char:'||LENGTH(v_info_char));
DBMS_OUTPUT.put_line('v_info_varchar:'||LENGTH(v_info_varchar));
END;
v_info_char: 10
v_info_varchar: 5
Validate NCHAR and NVARCHAR2
DECLARE
v_info_nchar NCHAR(20);
v_info_nvarchar NVARCHAR2(20);
BEGIN
v_info_nchar:='MR.HONG';
v_info_nvarchar:='13820305037';
DBMS_OUTPUT.put_line('v_info_nchar:'||LENGTH(v_info_nchar));
DBMS_OUTPUT.put_line('v_info_nvarchar:'||LENGTH(v_info_nvarchar));
END;
/
v_info_nchar:20
v_info_nvarchar:11
date type
DATE type
Define a DATE variable
DECLARE
v_date1 DATE:=SYSDATE;
v_date2 DATE: = SYSTIMESTAMP;
v_date3 DATE:='2018-05-01'; --TO_DATE(‘2018-05-01 23:59:59’,‘yyyy-mm-dd hh24:mi:ss’
BEGIN
DBMS_OUTPUT.put_line(TO_CHAR(v_date1,'yyyy-mm-dd hh24:mi:ss'));
DBMS_OUTPUT.put_line(TO_CHAR(v_date2,'yyyy-mm-dd hh24:mi:ss'));
DBMS_OUTPUT.put_line(TO_CHAR(v_date3,'yyyy-mm-dd hh24:mi:ss'));
END;
/
2018-05-02 15:28:39
2018-05-02 15:28:39
2018-05-01 00:00:00
TIMESTAMP is more precise than DATE type
Define a variable of type TIMESTAMP
DECLARE
v_timestamp1 DATE:=SYSDATE;
v_timestamp2 TIMESTAMP:=SYSDATE;
v_timestamp3 TIMESTAMP: = SYSTIMESTAMP;
BEGIN
DBMS_OUTPUT.put_line(v_timestamp1);
DBMS_OUTPUT.put_line(v_timestamp2);
DBMS_OUTPUT.put_line(v_timestamp3);
END;
/
2018-05-02 15:49:46
02-MAY-18 03.49.46.000000 PM
02-MAY-18 03.49.46.541681 PM
v_timestamp2 TIMESTAMP WITH TIME ZONE:=SYSTIMESTAMP;
v_timestamp3 TIMESTAMP WITH LOCAL TIME ZONE:=SYSTIMESTAMP;
02-MAY-18 04.10.24.412348 PM +08:00
02-MAY-18 04.10.24.412353 PM
define boolean variable
DECLARE
v_flag BOOLEAN;
BEGIN
v_flag:=true;
IF v_flag THEN
DBMS_OUTPUT.put_line('fullfill');
END IF;
END;
/
Subtype
DECLARE
SUBTYPE score_subtype IS NUMBER(5,2) NOT NULL;
v_score score_subtype:=99.35;
BEGIN
DBMS_OUTPUT.put_line('score:'||v_score);
END;
/
DECLARE
SUBTYPE string_subtype IS VARCHAR2(200);
v_company string_subtype;
BEGIN
v_company:='www.vdedu.com';
DBMS_OUTPUT.put_line(v_company);
END;
/