oracle中PL/SQL详解(一)

原创 2012年03月21日 18:10:41
 

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中声明

几种声明变量的方法:

 Var1 char(15);

Married Boolean :=true;

Psal number(7,2);

My_name emp.ename%type;

Emp_rec  emp%rowtype;

记录变量分量的引用

 Emp rec.ename:=’ADAMS’;

 

正确的操作:

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;

//案例

declare

pnum number:=10;

begin

if pnum>10 then

dbms_output.put_line('变量值大于10');

elsif pnum=10 then

dbms_output.put_line('变量值等于10');

else

dbms_output.put_line('变量值小于10');

end if;

end;

 

//第一步先运行输入

accept num prompt '请输入一个数字';

第二步:

declare

pnum number:=&num;

begin

if pnum>10 then

dbms_output.put_line('变量值大于10');

elsif pnum=10 then

dbms_output.put_line('变量值等于10');

else

dbms_output.put_line('变量值小于10');

end if;

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语句,循环将无条件执行,这种循环称为死循环,死循环尽量避免。

语法格式如下:

     Loop

       ---statement---

 Exit when condition

 End loop;

 

案例:

SQL> declare

      i number(2):=1;

       begin

            loop

              dbms_output.put_line(i);

                   i:=i+1;

          exit when i>10;

          end loop;

          end;

   /

 

While循环

    语法:

    While condition

         Loop

           Statement;

        End loop;

 

SQL> declare

     i number(2):=1;

         begin

           while i<10   

              loop dbms_output.put_line(i);

                i:=i+1;

             end loop;

          end;

  /

 

For循环

     For loop_control_variable in [reverse] lower upper loop

          Statement;

        End loop;

 

  SQL> begin

         for i in 1..10

            loop

            dbms_output.put_line(i);

           end loop;

       end;

      /

ORACLE PL/SQL去重语句详解

  • 2009年01月12日 15:53
  • 171KB
  • 下载

Oracle数据库PL/SQL快捷键设置详解

本文我们主要介绍了Oracle数据库中PL/SQL设置快捷键的详细过程,包括设置登录后默认自动选中My Objects、记住密码、双击即显示表数据等内容,希望能够对您有所帮助。 Orac...

ORACLE PL/SQL编程详解之四:把游标说透

本篇主要内容如下: 4.1 游标概念 4.1.1 处理显式游标 4.1.2 处理隐式游标 4.1.3 关于 NO_DATA_FOUND 和 %NOTFOUND的区别 4.1.4  使用游标更...
  • kana007
  • kana007
  • 2013年12月23日 10:44
  • 910

Oracle数据库PL/SQL快捷键设置详解

Oracle数据库中,PL/SQL设置快捷键的方法是本文我们主要要介绍的内容,了解了这些设置可以是我们更效率地使用Oracle数据库,接下来就让我们一起来了解一下这部分内容吧。 1、登录后默认自...

ORACLE PL/SQL编程详解之七:程序包的创建与应用

本篇主要内容如下: 第七章  程序包的创建和应用 7.1  程序包简介 7.2  程序包的定义 7.3  包的开发步骤 7.4  包定义的说明 7.5  子程序重载 7.6  加密实用程...

oracle 中pl/sql详解(二)

游标:   游标(cursor)可以被看作指向结果集(a set of rows)中一行的指针(pointer)。在oracle数据库中可以使用显示或隐式两种游标。   隐式游标: 在执行一个...

ORACLE PL/SQL编程详解之三

ORACLE PL/SQL编程详解之三!

ORACLE PL/SQL编程详解之一

ORACLE PL/SQL编程详解之一!

ORACLE PL/SQL编程详解之七:程序包的创建与应用

ORACLE PL/SQL编程详解之七:  程序包的创建与应用(聪明在于学习,天才在于积累!)...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:oracle中PL/SQL详解(一)
举报原因:
原因补充:

(最多只允许输入30个字)