日期:2014-05-16  浏览次数:20310 次

oracle入门10

PL/SQL编程
  PL/SQL是oracle的专用语言,它对标准的SQL语言的扩展.SQL语句可以嵌套在PL/SQL语言中,并结合处理语句。

PL/SQL程序结构
  使用了程序块的结构组织的代码.最简单的程序块是一种被称为”匿名块”的程序块,匿名块是指不会被oracle存储并且不能够重用程序块。
PL/SQL程序通常包括3部分:Declare部分、exception部分、Begin和end部分.
Begin和end是PL/SQL的必须部分,总是begin开始end结束.

Declare部分包含定义变量、常量和游标等类型的代码.

Begin与end之间可以嵌套begin与end及exception.

//打开服务器的输出
SQL> set serveroutput on;
SQL> begin //开始
  2  dbms_output.put_line('Hello World');
  3  end;
  4  /
变量与常量的声明:
     变量名  类型(字符,日期,数字,布尔)[:=缺省值];
     常量名 constant 类型(字符,日期,数字,布尔) [:=缺省值];

变量与常量的区别:
     变量可以在任何部分进行赋值.
     而常量在declare中声明并且赋值.
注意:都是在declare中声明

正确的操作:
declare
    pagesize constant number(2) :=10;
begin
    dbms_output.put_line(pagesize);
end;
/

作用域:
   是能够引用变量名称这样的标识符的程序块。
    
declare
   pagesize number(2):=10;  //在整个中都有效
begin
   dbms_output.put_line(pagesize);
   declare
   pagesize number(2):=99; //只是在内容声明部分到end结束有效
    begin
    dbms_output.put_line(pagesize);
    end;
end;
/



//声明一个整型的变量
SQL> declare
  2   age number(2);
  3  begin
  4  age:=90;
  5  dbms_output.put_line(age);
  6  end;
  7  /
//声明后直接赋值
SQL> declare
  2   age number(2) :=90;
  3  begin
  4  dbms_output.put_line(age);
  5  end;
  6  /
//捕获异常处理
SQL> declare
  2  age number(2);
  3  begin
  4  age :='qwe'
  5  ;
  6  exception
  7  when others then
  8  dbms_output.put_line('赋值失败');
  9  end;
10  /


条件判断语句
  有if与case语句
  
  If语句
If语法
   If(expression1)then pl/sql_statement
   Else
        Pl/sql_statement;
   End if;
  
If(expression1)then pl/sql_statement
   Else if(expression2)
        Pl/sql_statement;
   Else
        Pl/sql_statement;
   End if;
  

Case语句
     从oracle9i以后引入
     Case <selector>
        When <expression1> then pl/sql_statement1;
        When <expression2> then pl/sql_statement2;
        …….
        [else  pl/sql_statement;]
     End;
//案例
SQL> declare score number(2) :=80;
   begin
       if score>70 then dbms_output.put_line('成绩合格');
   end if;
   end;
  /

SQL> declare score number(2) :=80;
   begin if score>90 then dbms_output.put_line('成绩合格');
else dbms_output.put_line('成绩不合格');
end if;
end;
/

成绩不合格


SQL> declare score number(2):=8;
begin
case score
when 9 then dbms_output.put_line('成绩优秀');
when 8 then dbms_output.put_line('成绩亮');
end case;
end;
/

循环语句
  最基本的循环称为无条件循环,如果没有指定exit语句,循环将无条件执行,这种