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;

上一篇 oracle 进阶(五)触发器的使用
目录
下一篇 oracle 进阶(七)修数