技术开发 频道

Oracle PL/SQL语言基础

    执行部分

    执行部分包含了所有的语句和表达式,执行部分以关键字BEGIN开始,以关键字EXCEPTION结束,如果EXCEPTION不存在,那么将以关键字END结束。分号分隔每一条语句,使用赋值操作符:=或SELECT INTO或FETCH INTO给每个变量赋值,执行部分的错误将在异常处理部分解决,在执行部分中可以使用另一个PL/SQL程序块,这种程序块被称为嵌套块

    所有的SQL数据操作语句都可以用于执行部分,PL/SQL块不能再屏幕上显示SELECT语句的输出。SELECT语句必须包括一个INTO子串或者是游标的一部分,执行部分使用的变量和常量必须首先在声明部分声明,执行部分必须至少包括一条可执行语句,NULL是一条合法的可执行语句,事物控制语句COMMIT和ROLLBACK可以在执行部分使用,数据定义语言(Data Definition language)不能在执行部分中使用,DDL语句与EXECUTE IMMEDIATE一起使用或者是DBMS_SQL调用。

    执行一个PL/SQL块

    SQL*PLUS中匿名的PL/SQL块的执行是在PL/SQL块后输入/来执行,如下面的例子所示:

declare  v_comm_percent constant number:=10; begin  update emp  set comm=sal*v_comm_percent  where deptno=10;  end SQL> / PL/SQL procedure successfully completed.

    命名的程序与匿名程序的执行不同,执行命名的程序块必须使用execute关键字:

create or replace procedure update_commission  (v_dept in number,v_pervent in number default 10) is begin  update emp  set comm=sal*v_percent  where deptno=v_dept; end SQL>/ Procedure created SQL>execute update_commission(10,15); PL/SQL procedure successfully completed.

    如果在另一个命名程序块或匿名程序块中执行这个程序,那么就不需要EXECUTE关进字。

declare  v_dept number; begin  select a.deptno  into v_dept  from emp a  where job='PRESIDENT'  update_commission(v_dept); end SQL>/  PL/SQL procedure successfully completed SQL>

    控制结构

    控制结构控制PL/SQL程序流程的代码行,PL/SQL支持条件控制和循环控制结构。

    语法和用途

    IF..THEN

    语法:

    IF condition THEN
     Statements 1;
     Statements 2;
     ....
    END IF
     

    IF语句判断条件condition是否为TRUE,如果是,则执行THEN后面的语句,如果condition为false或NULL则跳过THEN到END IF之间的语句,执行END IF后面的语句。

    IF..THEN...ELSE

    语法:

    IF condition THEN
     Statements 1;
     Statements 2;
     ....
    ELSE
     Statements 1;
     Statements 2;
     ....
    END IF 

    如果条件condition为TRUE,则执行THEN到ELSE之间的语句,否则执行ELSE到END IF之间的语句。

    IF 可以嵌套,可以在IF 或IF ..ELSE语句中使用IF或IF..ELSE语句。

    if (a>b) and (a>c) then
      g:=a;
    else
      g:=b;
      if c>g then
       g:=c;
      end if
    end if

    IF..THEN..ELSIF

    语法:

    IF condition1 THEN
     statement1;
    ELSIF condition2 THEN
     statement2;
    ELSIF condition3 THEN
     statement3;
    ELSE
     statement4;
    END IF;
     statement5;     

    如果条件condition1为TRUE则执行statement1,然后执行statement5,否则判断condition2是否为TRUE,若为TRUE则执行statement2,然后执行statement5,对于condition3也是相同的,如果condition1,condition2,condition3都不成立,那么将执行statement4,然后执行statement5。

0
相关文章