1 基本数据类型
1)数值类型 number number可以通过number(p,s)来格式化数字。P表示精度,指数值中所有有效数字的个数。参数s表示刻度范围,表示小数点右边小数位的个数。
比如 num_money number(9,2);
2)字符类型 varchar2,char,long,nchar,nvarchar2等. varchar2 用于存储可变长度的字符串。最大长度为4000字节。char类型表示指定长度的字符串。char(maxlength)
maxlength表示可存储字符的最大长度。char类型的默认最大长度为1字节。long类型表示一个可变的字符串。
3)日期类型 只有一种 date类型。存储空间是7个字节 存储世纪、年、月、日、小时、分钟、秒
4)布尔类型 其变量值可以是TRUE,FALSE,或null。
2 特殊数据类型
1%type类型 可以申明一个与指定列名称相同的数据类型。例如 declare var_job emp.job%type; emp.job的数据类型是varchar(20),那么var_job的数据类型也是varchar(20); 其好处有1 不必查看表中各个列的数据类型,可以确保所定义的变量能够存储检索到的数据。2 如果对表中已有的数据类型进行修改,不必考虑对定义的变量进行类型更改。%type类型的变量会根据列的实际类型自动调整。
2 record类型 有记录的意思,使用该变量可以存储由多个列值组成的一行数据。如
set serveroutput on
declare type emp_type is record ( var_ename varchar2(20), var_job varchar2(20), var_sal number ); empinfo emp_type;begin select ENAME,job,sal into empinfo from emp where empno='7369'; DBMS_OUTPUT.PUT_LINE('1'||empinfo.var_ename||'2'||empinfo.var_job||'3'||empinfo.var_sal);end;3 %rowtype 类型 结合了%type和record类型的优点,可以根据数据表中行的结构定义一种特殊的数据类型。用来存储从数据表中检索到的一行数据. 比如
--%rowtype 类型 结合了%type和record的特点
declare rowvar_emp emp%rowtype;begin select * into rowvar_emp from emp where empno='7369'; /*输出检索到的信息*/ DBMS_OUTPUT.PUT_LINE('1 '||rowvar_emp.ename||' 2 '||rowvar_emp.empno||' 3 '||rowvar_emp.job);end;