【个人笔记】PL/SQL 基本编程

来源:互联网 发布:sql有哪几级权限 编辑:程序博客网 时间:2024/05/19 13:23

PL/SQL 编程

for update [of] [columnName]

PL/SQL 块包括 :变量/异常声明块、代码执行块、异常处理块

基本格式如下:

DECLARE    [变量/异常声明块];BEGIN    [代码执行块][EXCEPTION    [异常处理块]]END;
  1. 声明变量和常量的语法
    Identifier [CONSTANT] DataType [NOT NULL] [:= | DEFAULT expr];        如:relt number(5) default 5;            relt constant number(4) := 3;
  1. 给变量赋值的方式
    使用赋值语句 :=
如: [VariableName] [DataType] := [value];            [VariableName] := [value];
使用 SELECT INTO 语句    如:select [A ColumnName] into [A VariableName] from [TableName] where [Conditions]; --要求返回值必须是单行单列的值

3. LOB 数据类型

    DBMS_LOB.READ(clob_var,amount,offset,output_var);        clob_var 存放CLOB数据的变量        output_var  用于存放从CLOB变量中截取出的值        amount 要读取的字符数        offset (相对起始位置)偏移量
  1. 关于 %TYPE 与 %ROWTYPE 的使用
    %TYPE 引用变量和数据库列的数据类型
    %ROWTYPE 提供表示表中一行的记录类型
        如: variable Table.Column%TYPE;            rowvariable Table%ROWTYPE;
  1. 关于逻辑比较
     = <> != < > <= >=
  1. 条件控制语句
    - IF        if [Condition expr] then        elif            [Commands]            ...        else            [Commands]        end if;
    - CASE        case '&variable'        when [value] then             [Commands];        ...        else            [Commands];        end case;
  1. 循环控制语句
    - LOOP 无条件循环        loop            [Commands];        end loop;
- WHILE 根据条件循环        while [Condition expr] loop            [Commands];        end loop;
    - FOR 循环固定的次数        for [variable] in [reverse] [variable array | value1..value2] loop            [Commands];        end loop;
  1. 顺序控制语句
- GOTO 无条件跳转        BEGIN            <<FLAG>>            [Commands];            goto QUIT;            goto FLAG;            <<QUIT>>            NULL;        END;
    - NULL 空语句        在任何语句块都可使用 NULL; 来充当一条语句
  1. 动态 SQL
    指在PL/SQL程序执行时生成的SQL语句,编译程序对动态SQL不做处理,而是在程序运行时动态构造语句、对语句进行语法分析并执行。
    DDL 语句命令和会话控制语句不能在PL/SQL中直接使用,但是可以通过动态SQL来执行。
    基本语法如下:
    EXECUTE IMMEDIATE dynamic_sql_string         [INTO define_variable_list]        [USING bind_argument_list];        -- list中有多个变量,用 ',' 分隔
如:
declare              sql_str varchar2(100);             sid student.sid%type;             sname student.sname%type;        begin             sid := '&sid';             sname := '&sname';             execute immediate 'insert into student(sid,sname) values(:sid,:sname)' using sid,sname;             commit;        end;
        --以上SQL语句中 values() 里的 ‘:sid’ 表示的是一个变量(‘sid’是变量名,该变量名可随意,但不可省略),该变量的值顺序对应 using 后跟着参数列表里的值。

10. 异常
在运行程序时出现的错误叫做异常,发生异常后,将停止执行,控制权转移到PL/SQL块的异常处理部分。

抛出异常的方式:    -使用 RAISE 关键字异常有两种类型:预定义异常、用户定义异常    -预定义异常        TOO_MANY_ROWS  等    -用户定义异常        定义异常的方式与定义变量的方式相同
exceptionname EXCEPTION; --EXCEPTION 是异常类型
        如:            myexception EXCEPTION;其他:    others 表示其他异常,必须用于所有异常处理的结尾(即最后一个异常处理)    sqlerrm 表示异常信息例子:
declare         myexception exception;        otherexception exception;        begin            -- raise myexception;             raise otherexception;        exception                 when myexception then                      dbms_output.put_line('get a exception !');                 when others then                      dbms_output.put_line('get a other exception !');        end;
  1. 引发程序错误
    RAISE_APPLICATION_ERROR(error_number,error_message);        -用于创建用户定义的错误信息        -可以在可执行部分和异常处理部分使用        -错误编号必须介于 -20000 和 -20999 之间        -错误消息的长度可长达 2048 个字节
0 0
原创粉丝点击