PL\SQL 学习笔记(二) pl\sql 变量声明 与 exception

1 declare :

   用作声明变量, 

     

declare
   v_name varchar2(20);          //声明长度为20的可变字符串 v_name
begin
 v_name:='myname';               // 对v_name进行赋值
dbms_output.put_line(v_name);    // 打印 
end;
/

 ---变量声明的规则:

1  变量名不能使用保留字,如 from ,select 等

2  第一个字符必须是字母

3 变量名最多包涵30个字符

4 不要与数据库或表同名

5 每一行只能声明一个变量


-- 变量声明 使用%type属性 . 

    变量多用作保存某张表某个字段的值 ,例如 生命的 v_sal number(7,2) 用来保存emp 中的 sal number (7,2). 

    但是随着表的变动,字段类型可能发生变化, 这样就要对v_sal的类型进行修改 .  使用%type 可以简化此问题

declare
  v_empno number(4);
   v_empno2 emp.empno%type;
   v_empno3 v_empno2%type;
   begin
       dbms_output.put_line('Text');
   end;
/

--常用变量类型

 1  binary_integer: 整数 ,主要用来计数而不是用来表示字段类型

2 number :数字类型

 3 char  定长字符串

 4 varchar2 变长字符串

  5 date 日期

 6 long 长字符串 ,最长2GB

boolean 布尔类型 ,可以取值为true,false 和null 值


--复杂的变量类型 :

 1 table (可以大致理解为下表可取负值的数组)  

declare
type type_table_emp_empno is table of emp.empno%type index by binary_integer;
v_empnos type_table_emp_empno;
begin
 v_empnos(0):=7369;
v_empnos(2):=7839;
v_empnos(-1) := 9999;
dbms_output.put_line(v_empnos(-1));
end;
/


 使用table 类型的步骤 

  1) 声明一个新的类型 如

          type type_table_emp_empno is table of emp.empno%type index by binary_integer;

                     这里,声明了一个  type_table_emp_empno  类型, 对这个类型的描述是, 它是 emp.empno%type 类型的table

  2)使用新声明的类型创建变量 

        v_empnos type_table_emp_empno;

2  Record  (有点类似于 类)

    

declare
 type type_record_dept is record
(
deptno dept.deptno%type,
 dname dept.dname%type,
 loc dept.loc%type
);
v_temp type_record_dept;
begin
 v_temp.deptno:=50;
 v_temp.dname:='aaaa';
v_temp.loc:='bj' ;
dbms_output.put_line(v_temp.deptno ||' ' ||v_temp.dname);
end;
/
或者  完全依照某个表来定义, 这样当表的字段变化时,该类也跟着变化

declare
   v_temp dept%rowtype;
begin
   v_temp.deptno :=50;
v_temp.dname:='aaaa';
v_temp.loc:='bj';
dbms_output.put_line(v_temp.deptno || ' '|| v_temp.dname);
end;
/


  2 exception  异常:

     此处与java类似

declare
 v_num number := 0;
begin
 v_num:=2/v_num;
dbms_output.put_line(v_num);
exception
 when others then   // when  others   包含所有异常情况
 dbms_output.put_line('error');
end;
/


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值