PL/SQL 基础

来源:互联网 发布:简易c语言程序 编辑:程序博客网 时间:2024/05/01 07:09

       PL/SQL的基本单位,区段。组成:声明部分、可运行部分、排除-构建 部分。

       PL/SQL的特点:时块结构语言。主要包括:存储过程、函数、匿名三部分。

       在运行PL/SQL时,不是逐条执行的,而是作为一组SQL语句整体执行。

       PL/SQL程序:有定义部分(DECLARE)、执行部分(BEGIN    END)和异常部分(EXCEPTION)组成。

                定义部分:用于定义常量、变量、游标、异常、复合数据类型,一般在程序中使用的变量都要在这里声明。

                执行部分:用于实现应用模块的功能。该部分包含了要执行的SQL语句块。

                异常部分:用于处理在执行SQL过程中产生的异常。

      示例:

DECLAREBEGINEXCEPTIONEND;

常用数据类型:

         变量:

        在声明部分声明:

语法:

         variable_name datatype not null [default_value:=value]

         常量声明如下:

         variable_name CONSTANT datatype not null [default_value:=value]


         运算符:

条件控制语句:

        IF conditons THEN statement1
        ELSIF conditions THEN statement2
        ELSE condition THEN statement3

 小示例:

DECLAREmynumber NUMBER(3) := 100;BEGINIF  mynumber = 100THENmynumber := mynumber + 15;dbms_output.put_line('输出结果为:' || mynumber);ELSIF mynumber = 115THENdbms_output.put_line('输出结果为:' || mynumber);END IF;END;-----------------------------------------------------------------------输出结果为:115

          case when then 条件控制语句:

--case when then 的第1种用法DECLARE    mynumber NUMBER(3) := 200;BEGIN    CASE  mynumber     WHEN 100    THEN        mynumber := mynumber + 15;        dbms_output.put_line('输出结果为:' || mynumber);    WHEN 115    THEN        dbms_output.put_line('输出结果为:' || mynumber);        ELSE        dbms_output.put_line('输出结果为:无符合条件结果' );    END CASE;END;---------------------------------------------------------------------------
输出结果为:无符合条件结果


--case when then 的第2种用法DECLARE    mynumber NUMBER(3) := 200;BEGIN    CASE     WHEN  mynumber= 100    THEN        mynumber := mynumber + 15;        dbms_output.put_line('输出结果为:' || mynumber);    WHEN  mynumber= 115    THEN        dbms_output.put_line('输出结果为:' || mynumber);        ELSE        dbms_output.put_line('输出结果为:无符合条件结果' );    END CASE;END;----------------------------------------------------------------输出结果为:无符合条件结果

LOOP 循环语句:

DECLARE    mynumber NUMBER(3) := 200;BEGIN    LOOP        EXIT WHEN mynumber >900 ;        mynumber := mynumber + 50;        dbms_output.put_line(mynumber);    END LOOP;END;---------------------------------------------250300350400450500550600650700750800850900950
WHILE循环:

DECLARE    mynumber NUMBER(3) := 200;BEGIN    WHILE  mynumber <900     LOOP                mynumber := mynumber + 50;        dbms_output.put_line(mynumber);    END LOOP;END;---------------------------------------------250300350400450500550600650700750800850900950

FOR 循环:

DECLARE    mynumber NUMBER(18,8);     secOND_number NUMBER(18,8):=1.5;    str CONSTANT VARCHAR2(100) := '输出结果:';BEGIN    FOR mynumber IN 1..10 LOOP      secOND_number := secOND_number*mynumber;            dbms_output.put_line(str || secOND_number);    END LOOP;END;---------------------------------------------输出结果:1.5输出结果:3输出结果:9输出结果:36输出结果:180输出结果:1080输出结果:7560输出结果:60480输出结果:544320输出结果:5443200


0 0
原创粉丝点击