5)间隔符,包括(),{},[],?,!,;,:,",'@,#,%,$,^,&等;
3.数据类型
1)数字类型
NUMBER(P,S),可存储整数和浮点数;P是有效数字个数,S是小数点右边数字的个数;
PLS_INTEGER
BINARY_INTEGER
后两种只能存储整数
与number等价的子类型:DEC、DECIMAL、DOUBLE、PRECISION、INTEGER、INT、NUMERIC、REAL、SMALLINT...
2)字符类型
VARCHAR2:存储变长字符串,VARCHAR2(maxlength)32767字节,数据库中该类型最大长度为4000字节;
CHAR:存储定长字符串,CHAR(maxlength) 32767字节,数据库中该类型最大长度为2000字节
LONG:存储变长字符串,最大长度为32760字节,数据库中该类型最大长度为2GB
NCHAR
NVARCHAR2
后两种类型的长度根据各国字符集的不同而不同;
3)日期类型
DATA,7字节,世纪、年、月、天、小时、分钟和秒;
4)布尔类型
BOOLEAN
5)type定义的数据类型(记录)
TYPE type_name IS RECORD(
variable_name datatype[,
variable_name datatype[,
...
);
real_name type_name;
记录示例:emp.eid%TYPE
DECLARE
TYPE myrecord IS RECORD(
id varchar2<10>,
name varchar2<10>
);
real_record myrecord;
BEGIN
SELECT eid,ename INTO real_record FROM emp WHERE eid='001';
DBMS_OUTPUT.PUT_LINE(real_record.id||','||real_reacord.name);
END;
DECLARE
TYPE myrecord IS RECORD(
id emp.eid%TYPE ,
name varchar2<10>
);
real_record myrecord;
BEGIN
SELECT eid,ename INTO real_record FROM emp WHERE eid='001';
DBMS_OUTPUT.PUT_LINE(real_record.id||','||real_reacord.name);
END;
DECLARE
myrec emp%ROWTYPE
BEGIN
SELECT * INTO myrec FROM emp WHERE eid='001';
DBMS_OUTPUT.PUT_LINE( myrec .eid||','|| myrec .ename);
END
4.控制结构
1)IF语句
IF 条件表达式1 THEN
语句序列1;
[ELSIF 条件表达式2 THEN
语句序列2;]
[ELSE
语句序列3;]
END IF;
2)CASE语句
CASE 检测表达式
WHEN 表达式1 THEN 语句序列1
......
WHEN 表达式n THEN 语句序列n
[ELSE 其他语句序列]
END;
3)NULL值检查
4)循环结构
LOOP...EXIT...END
control_var:=0;
LOOP
IF control_var>5 THEN
EXIT;
END IF;
control_var:=control_var+1;
END LOOP;
LOOP ... EXIT WHEN ...END
control_var:=0;
LOOP
EXIT WHEN control_var>5
control_var:=control_var+1;
END LOOP;
WHILE...LOOP...END
control_var:=0;
WHILE control_var<=5 LOOP
control_var:=control_val+1;
END LOOP;
FOR...IN...LOOP...END
FRO control_var in 0...5 LOOP
NULL;
END LOOP;
GOTO lable;
...
<<mark>>
...
IF no>98050 THEN
GOTO goto_mark;
...
5.表达式
1)字符表达式
'hello'||' world'||'!'=hello world!