oracle 进阶(六)使用补充
补充
1、PL/SQL 中基本数据类型
类型标识符 | 说明 | 例子 |
Number(p,s) | P 表示精度,用于指定总位数;s 表示刻度,用于指定小数点之后的位数。 | Sal Number(7,2); |
Int(integer) | 整型数,是 number 的子类型 | Sal int; |
Char(n) | 定长字符型,n 位字符。最大 255 个字符 | Name Char(8); |
Varchar2(n) | 变长字符型,n 位字符。最大 2000 个字符 | Name Varchar2(8); |
Boolean | 布尔类型,取值范围为 TRUE,FALSE,NULL | Flag Boolean; |
Date | 日期型 | Birthday Date; |
2、类型模糊的变量定义
对于类型模糊的变量,可以使用数据库对应表,对应字段的类型来定义。
%TYPE 对应表中字段类型
%ROWTYPE 对应表类型
语法格式如下:
<变量名称> <数据表的名称>%rowtype;
<变量名称> <表名.字段名>%TYPE;
示例:
--声明
declare
--当变量不能明确类型是可以用%TYPE、%ROWTYPE方式声明变量
v_sname varchar2(20);
v_esal emp.sal%type;
v_emp emp%rowtype;
--定义常量,常量被赋值后不可修改,声明时赋值
c_dname constant varchar2(20):='常量';
--执行
begin
--输出语句
select ename,sal into v_sname,v_esal from emp where empno='7369';
select * from emp into v_emp where deptno='11';
dbms_output.put_line(v_sname);
dbms_output.put_line(v_esal);
dbms_output.put_line(v_emp.sal);
--执行时输入sname的值
v_sname :=&sname;
dbms_output.put_line(v_sname);
dbms_output.put_line(c_dname);
--异常处理(有异常时,进行异常处理,没有时可以省掉)
--exception
--结束
end;
3、自定义表结构 RECORD
RECORD 域中可以包含多个表的字段,但不能包含 %ROWTYPE 类型
语法格式如下:
type <record名称> is record
(
<变量名称> <表名.字段名>%TYPE,
<变量名称> <表名.字段名>%TYPE
);
使用:
--定义变量m_record1为my_record类型
m_record1 my_record;
示例:
declare
type my_record is record
(
v_dname DEPT.dname%type,
v_ename EMP.ename%type
);
my_record1 my_record;
begin
select dept.dname,emp.ename into my_record1 from
DEPT dept,EMP emp
where dept.deptno= emp.deptno
and dept.deptno='20' and rownum<2;
dbms_output.put_line(my_record1.v_dname);
dbms_output.put_line(my_record1.v_ename);
end;