一、基础数据类型
类型 | 说明(racle SQL 定义的数据类型) |
varchar2(长度) | 可变长度字符串,最长为32767 字节,必须指定长度 |
NUMBER(精度,小数) | 既可以存储浮点数,也可以存储整数,p 表示数字的最大位数,s 是指小数位数 |
DATE | 存储日期和时间,存储纪元 |
TIMESTAMP | 存储日期的年月日,时分秒,以及秒后 6 位,同时包含时区 |
CHAR(长度) | 存储固定长度的字符串,小于长度用空格代替,默认长度是 1,最长不超过 2000 字节 |
二、属性数据类型
当声明变量是数据库的某行或某列,可直接使用属性数据类型,分别为%type和%rowtype
% ROWTYPE:直接引用数据库的一行作为数据类型,即记录类型,可用.访问记录的属性
declare
mysql my%rowtype
begin
select * into mysql from my where sql_Id='1';
dbms_output.put_line(mysql.sql_id||'的名字是'||mysql.sql_name);
end;
代码解析
1.声明一个mysql对象,该对象表示my表中的一行;
2.从my表中查询一条记录放在mysql对象中
3.访问该对象属性用.。
常用于plsql代码需经常访问数据库的多列数据,减少变量声明
(2)%type:引用某个变量或者数据库的列的类型作为某个变量的数据类型
declare
insal emp.sal%type;
begin
select sal into insal from emp where empno='2022';
dbms_output.put_line(insal);
end;
(3)record 自定义数据类型,可由一个数据类型囊获多个变量数据类型
type record_name is record (v1 date_type,v2 date_type,vn date_type)
declare
type emp_record_type is record (name emp.name%type,dname emp.dname%tpye, sal number(10,2));
emp_record emp_record_type;
begin
select name.dname,sal into emp_record from emp where empno='2666';
dbms_output.put_line(emp_record.name||'所在的部门是'||emp_record.dname);
end;
属性数据类型可以避免变量引用数据库某列或行数据时而引起的数据类型不匹配