Chinaunix首页 | 论坛 | 博客
  • 博客访问: 52054
  • 博文数量: 23
  • 博客积分: 1415
  • 博客等级: 上尉
  • 技术积分: 281
  • 用 户 组: 普通用户
  • 注册时间: 2006-08-04 16:00
文章分类

全部博文(23)

文章存档

2014年(19)

2008年(1)

2007年(3)

我的朋友

分类: Oracle

2014-05-08 14:47:23


一、定义:
        PL= procedure language 
        SQL= Structured Query Language 
        PL/SQL = PL+SQL,是SQL语言的扩展

二、分类:
   匿名块:没有名字的PL/SQL块,只能执行一次,不能存储在数据库中。
   非匿名快:有名字的PL/SQL块,可以根据名字多次执行,可以存储在数据库中。如:存储过程、包、触发器。



三、结构:
   PL/SQL块组成:
    declare    (可选)
      .....
    begin
      .....
    exception     (可选)
      .....
    end;

   说明:
      【1】declare
             1)变量声明区域
             2)用于PL/SQL变量声明,所有变量均需要在此处声明;
             3)若在PL/SQL块中不需要变量,则可略去该部分。
      【2】begin
             1)是块体开始关键字,必须存在。
      【3】exception
             1)是异常捕获区域;
             2)如有异常需捕获则需编写该部分代码,
             3)如无需捕获异常,则可略去该部分。
             4)异常捕获实例,见本文末尾(异常捕获实例)
      【4】end;
             1)块体结束关键字,必须存在。其后必须有分号“;”
      【5】
             1)在每个块结束时,其后必须要加上分号“;”(英文输入模式下的).
             2)在每个语句结束时,末尾需要加上分号“;”(英文输入模式下的).

四、实例:
   (1)标准PL/SQL块

     declare
       name varchar2(20);
       x number;
       y number;
     begin
       name := 'HanGuo';
       dbms_output.put_line('The name is '||name); 
       x := 20;
       y := x/0;                   --除数为0,必然报错,这将导致程序运行失败,所以需要捕获异常,并处理。
       dbms_output.put_line('x divide 0 is '||y); 
     exception
       when others then
         dbms_output.put_line('ERRORS-20010:It is 0 for divide number'); 
     end;

   (2)无declare部分的PL/SQL块

    --如果PL/SQL块之中不需要声明变量,则可以略去'declare'部分,如下实例:
     
     begin
       for x in 1 .. 10
       loop
         dbms_output.put_line('The is th'||x||' time;'); 
       end loop;
     exception
       when others then
         dbms_output.put_line('ERRORS-20010:It is 0 for divide number'); 
     end;


  (3)无exception部分的PL/SQL块


   --如果PL/SQL块之中不需要捕获异常,可以略去'exception'部分,如下实例:

    declare
      name varchar2(20);
      age number(5);
      sex varchar2(6);
    begin
      name := 'HanGuo';
      age := 29;
      sex := 'male';
      dbms_output.put_line(name||' is '||sex||',age is '||age);  
    end;

 (4)无declare和exception部分的PL/SQL块
  
  --PL/SQL块中可以略去'declare’和‘exception'这两部分,如下实例:

     begin
         dbms_output.put_line(sysdate); 
     end;
   -------------------------------------------------------------
     begin
       for x in 1 .. 10
       loop
         dbms_output.put_line('The is th'||x||' time;'); 
       end loop;
     end;

 (5)异常捕获实例
    declare
      x number;
    begin
      x := 20;
      x := x/0;    --除数为0,必然报错,这将导致程序运行失败,所以需要捕获异常,并处理。
      dbms_output.put_line('x divide 0 is '||x);
    exception
      when others then
        dbms_output.put_line('ERRORS---0001 :It is 0 for divide number'); 
    end;



阅读(288) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~