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

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 个字节
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值