3.1 PL/SQL基础知识
    3.1.1 什么是PL/SQL?
        PL/SQL是结合Oracle过程语言和结构化查询语言的一种扩展语言
        3.1.1.1 PL/SQL体系结构(教材76页图3.2)
        3.1.1.2 PL/SQL块简介
             定义:PL/SQL是一种块结构语言,它将一组语句放在一个块中。
            组成:声明部分、执行部分、异常处理部分。
            结构:[DECLARE]
                        --声明部分
                  BEGIN
                          --执行部分
                  [EXCEPRION]
                          异常处理部分
                  END;
                  --执行部分不能省略
        3.1.1.3 运算部分和表达式
            关系运算符:=、(<>、!=、~=、^=)不等于、<、>、<=、>=、
            一般运算符:+、-、*、/、(:=)赋值号、=>、(..)范围运算符、||        
            逻辑运算符:IS NULL、BETWEEN  AND、IN、AND、OR、NOT
        3.1.1.4 常量和变量的声明
            3.1.1.3.1 变量:
                    DECLARE variable_name date_type[(size)][:=init_value];
                    variable_name:变量名
                    date_type:数据类型
                    size:指定变量范围
                    init_value:变量的初始值
            3.1.1.3.2 常量:
                    DECLARE variable_name CONSTANT date_type :=value;
                    标识符定义要求:
                    1、标识符名不能超过30个字符
                    2、第一个字符必须为字母
                    3、不区分大小写
                    4、不能用’-‘号
                    5、不能是SQL保留字
                编码规则:1、利用缩进排列展现逻辑结构
                          2、利用大小写增强可读性
                          3、格式化单独语句
                          4、格式化SQL语句
        3.1.1.5 注释
                单行注释:--这是注释
                多行注释:/*这是注释*/        
    3.1.2 PL/SQL数据类型
        3.1.2.1 标量数据类型
            类型         子类
            CHAR        character
                        nchar
            VARCHAR2    Varchar String
                        NVARCHAR2
            BINARY_INTEGER      --带符号整数,为整数计算优化性能
            NUMBER(p,s) Dec
                        Double Precision--整数
                        Integer --整数
                        Int
                        Numeric
                        Real
                        Small int
            LONG  --变长字符
            DATE
            BOOLEAN --布尔
        3.1.2.2 LOB数据类型
            BFILE
            BLOB
            CLOB
            NCLOB
        3.1.2.3 属性类型
            %TYPE:定义一个变量
                优点:可以不必知道所引用的数据库列的数据类型
                      所引用的数据库列可以实时改变,容易保持一致,不要修改PL/SQL程序
            %ROWTYPE:返回一个记录类型
                优点:可以不必知道所引用的数据库列的个数和数据类型    
                      所引用的数据库列的个数和数据类型可以实时改变,容易保持一致,不要修改PL/SQL程序                
    3.1.3 PL/SQL控制语句
        3.1.3.1 条件控制
            IF语句和CASE语句
            IF语法:
                IF<布尔表达式> THEN
                    PL/SQL和SQL语句
                END IF;
                
            IF-ELSE语法:
                IF<布尔表达式> THEN
                    PL/SQL和SQL语句
                ELSE
                    --其他语句
                END IF;
                
            --多重IF语法
                IF<布尔表达式> THEN
                    PL/SQL和SQL语句
                ELSIF<其他布尔表达式> THEN
                    其他语句
                ELSIF<其他布尔表达式> THEN
                    其他语句
                ELSE
                    其他语句
                END IF;
                注:ELSIF——————ELSEIF    不要写错
                
            CASE语法:
                一:
                 CASE 条件表达式
                    WHEN 条件表达式结果1 THEN
                        语句段1
                    WHEN 条件表达式结果2 THEN
                        语句段2
                    WHEN 条件表达式结果n THEN
                        语句段n
                    [ELSE 语句段]
                 END CASE;
                
                二:
                 CASE
                    WHEN 条件表达式1 THEN
                        语句段1
                    WHEN 条件表达式2 THEN
                        语句段2
                    WHEN 条件表达式n THEN
                        语句段n
                    [ELSE 语句段]
                 END CASE;
                
        3.1.3.2 循环控制
            LOOP循环:
                LOOP
                    要执行的语句;
                    EXIT WHEN<条件语句>--满足条件,退出循环
                END LOOP;
                
            WHILE循环:
                WHILE<布尔表达式>
                LOOP
                    要执行的语句;
                END LOOP;
                
            FOR循环:    
                FOR 循环计数器 IN [REVERSE] 下限 ... 上限
                LOOP
                    要执行的语句;
                END LOOP;
                
        3.1.3.3 顺序控制        
            NULL语句:这是一个可执行语句,相当于一个占位符或不执行任何操作的空语句,
                      可以使某些语句变得有意义,提高程序可读性,保证其他语句结果的完整性和正确性。
3.2 异常处理
    3.2.1 什么是异常:在程序运行时出现的错误叫作异常。
    3.2.2 预定义异常:(教材84页)
          异常处理程序的语法:
                  BEGIN    
                    sequence_of_statements;
                EXCEPRION
                    WHEN <exception_name> THEN    
                        sequence_of_statements;
                    WHEN OTHERS THEN
                        sequence_of_statements;
                END;
                OTHERS:处理程序确保不会漏掉任何异常
    3.2.3 处理用户自定义异常
        步骤:1、在PL/SQL块的定义部分定义异常情况
                 <异常情况> EXCEPRION
              2、抛出异常情况
                 PAISE <异常情况>;
              3、在PL/SQL块的异常情况处理部分对异常情况作出相应处理
            RAISE_APPLICATION_ERRO--储存过程,可以重新定义异常错误信息
            语法:RAISE_APPLICATION_ERRO(error_name,error message);
3.3 显示游标
    3.3.1 基本原理
        在Oracle中,在执行一个查询,新增,修改,删除语句PL/SQL块时,Oracle在内存中分配一个缓冲区
        将执行结果放在缓冲区,游标则是指向该区的一个指针。
    3.3.2 游标分类
        静态游标:隐式游标、显式游标
        动态游标:。。。
    3.3.3 显式游标
        3.3.3.1 显示游标使用步骤
            1)声明游标
                语法:
                CURSOR cursor_name [(parameter,[,parameter]...)]
                [RETURN return_type] IS select_statements;
                cursor_name:游标名称
                parameter:为游标指定输入参数
                return_type:定义游标提取的行的类型
                select_statemenst:游标定义的查询语句
            2)打开游标
                语法:
                OPEN cursor_name[(parameter)];
            3)提取游标
                语法:
                FETCH cursor_name INTO variables;--变量名
            4)关闭游标
                语法:
                CLOSE cursor_name;
        3.3.3.2 显示游标属性
            1、%FOUND:只有DML影响一行或多行时,此属性才返回TRUE;
            2、%NOTFOUND:与%FOUND属性相反,没有影响时,返回TRUE;
            3、%ROWCOUNT:返回受影响行数
            4、ISOPEN:返回游标是否已开启
        3.3.3.3 使用显示游标删除或更新
            更新:
                CURSOR cursor_name IS
                        select_statements FOR UPDATE [OF columns];--更新查询,锁定选择的行,
                1)选择单表更新查询时,可以省略OF子句
                2)当选择多个表更新查询时,被锁定的行来源于OF子句后声明的列所在的表中的行。
                在使用FOR UPDATE声明游标之后,
                UPDATE table_name
                    SET column_name =column_value
                WHERE CURRENT OF cursor_name;
                多表查询时,更新表为锁定行所在的表
        3.3.3.3 使用循环游标简化游标的读取
            语法:
            FOR record_index IN cursor_name
            LOOP
                executable_statements
            END LOOP;
            record_index:声明的记录变量值
3.4 储存过程
    3.4.1 子程序的组成
        子程序是已经定义的PL/SQL块
        3.4.1.1声明部分
        3.4.1.2可执行部分
        3.4.1.3异常处理部分(可选)
    3.4.2 储存过程的基本用法
        1)创建储存过程
            CREATE [OR REPLACE] PROCEDURE procadure_name--储存过程名称
                [(procadure_list)]--参数列表
            {IS|AS}
                [local_declarations]--局部声明
            BEGIN
                executable_statements--可执行语句
            [EXCEPTION]
                [exception_handlers]--异常处理程序
            END [procedure_name]
        2)调用储存过程
            1)用命令调用
                EXEC[UTE] procadure_name (procadure_list);
                参数传递:
                    1、按位置传参
                    2、按名称传参
                    3、或者方式传参
            2)在PL/SQL块中调用
        3)储存过程的参数模式
            parameter_name [IN | OUT | IN OUT] datatype [{:= | DEFAULT} expression]
        4)储存过程的访问权限
            管理员和当前用户可用,其他用户调用需获得EXECUTE权限
        5)删除储存过程        
            DROP PROCEDURE procedure_name;
    3.4.3 储存过程的调试和跟踪
            1、在SQL*Plus下调试
            2、使用PL/SQL Developer工具调试
    3.4.4 储存过程规范
        7条(教材96页)

第三章 PL/SQL编程的更多相关文章

  1. ORACLE PL/SQL 实例精解之第三章 PL/SQL中的SQL

    3.1 在PL/SQL中使用DML 在PL/SQL语块中,两种变量赋值a. := 初始化.b. select into语法,PL/SQL语块的声明部分被声明的变量,后期可以使用选择语句进行赋值. 3. ...

  2. PL/SQL编程基础(三):数据类型划分

    数据类型划分 在Oracle之中所提供的数据类型,一共分为四类: 标量类型(SCALAR,或称基本数据类型) 用于保存单个值,例如:字符串.数字.日期.布尔: 标量类型只是作为单一类型的数据存在,有的 ...

  3. ORACLE PL/SQL编程详解

    ORACLE PL/SQL编程详解 编程详解 SQL语言只是访问.操作数据库的语言,并不是一种具有流程控制的程序设计语言,而只有程序设计语言才能用于应用软件的开发.PL /SQL是一种高级数据库程序设 ...

  4. [强烈推荐]ORACLE PL/SQL编程详解之七:程序包的创建与应用(聪明在于学习,天才在于积累!)

    原文:[强烈推荐]ORACLE PL/SQL编程详解之七:程序包的创建与应用(聪明在于学习,天才在于积累!) [强烈推荐]ORACLE PL/SQL编程详解之七: 程序包的创建与应用(聪明在于学习,天 ...

  5. ORACLE PL/SQL编程详解(转)

    原帖地址:http://blog.csdn.net/chenjinping123/article/details/8737604 ORACLE PL/SQL编程详解 SQL语言只是访问.操作数据库的语 ...

  6. pl/sql编程

    body { font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI ...

  7. ORACLE PL/SQL编程之八:把触发器说透

    原文:ORACLE PL/SQL编程之八:把触发器说透 ORACLE PL/SQL编程之八: 把触发器说透 大家一定要评论呀,感谢!光发表就花了我将近一个下午. 本篇主要内容如下: 8.1 触发器类型 ...

  8. [推荐]ORACLE PL/SQL编程之五:异常错误处理(知已知彼、百战不殆)

    原文:[推荐]ORACLE PL/SQL编程之五:异常错误处理(知已知彼.百战不殆) [推荐]ORACLE PL/SQL编程之五: 异常错误处理(知已知彼.百战不殆) 继上三篇:ORACLE PL/S ...

  9. ORACLE PL/SQL编程之六:把过程与函数说透(穷追猛打,把根儿都拔起!)

    原文:ORACLE PL/SQL编程之六:把过程与函数说透(穷追猛打,把根儿都拔起!) ORACLE PL/SQL编程之六: 把过程与函数说透(穷追猛打,把根儿都拔起!)   继上篇:ORACLE P ...

随机推荐

  1. TypeScript 优秀开源项目大合集

    TypeScript出来有段时间了,也冒出了很多用TypeScript开发的优秀开源项目,搜寻了一些基于TypeScript项目,分享给大家: https://github.com/brookshi/ ...

  2. VS.NET2010水晶报表安装部署[VS2010]

    水晶报表VS2010版IDE安装标准版SAP Crystal Reports, version for Visual Studio 2010 - Standard: 下载地址: http://down ...

  3. 使用Eclipse/MyEclipse开发Java程序

    集成开发环境(IDE)是一类软件 将程序开发环境和程序调试环境集合在一起,提高开发效率 下载eclipse安装包网址:http://www.eclipse.org/downloads/ **MyEcl ...

  4. Socket协议

    Socket协议的形象描述 socket的英文原义是"孔"或"插座".在这里作为4BDS UNIX的进程通信机制,取后一种意思.socket非常类似于电话插座. ...

  5. LKNotification控件-通知控件

    通知控件 项目介绍: 一个通知控件,长得很像iOS系统的通知栏弹出时候的样式.可以多个通知覆盖.引入项目之后,只需调用一行代码即可 [Java] 查看源文件 复制代码 ? 1 LKNotificati ...

  6. windows phone 8.1开发:锁屏提醒

    原文出自:http://www.bcmeng.com/lockscreen/ 之前小梦和大家分享了toast通知,磁铁更新,今天小梦和大家分享windows phone 8.1开发中的锁屏提醒.相比t ...

  7. Android中的ScrollTo和ScrollBy解析

    关于Android中的ScrollBy和ScrollTo方法相信大家并不陌生,这两个方法是在View中实现的.所以在各个继承了View的类都可以使用改方法. 在View中对这两个方法的源码编写是这样的 ...

  8. asp.net core mvc剖析:动作执行

    紧跟上一篇文章.通过路由和动作匹配后,最终会得到跟当前请求最匹配的一个ActionDescriptor,然后通过IActionInvoker执行动作. 我们先来看一下IActionInvoker如何得 ...

  9. iOS开发之UITableView及cell重用

    1.UITanleview有的两种风格 一种是Plain,一种是Grouped,可以从这里设置风格: 他们样式分别如下: Plain: Grouped: 2.tableView展示数据的过程: (1) ...

  10. 自适应滤波——线性预测(LPC)

    作者:桂. 时间:2017-03-26  10:12:07 链接:http://www.cnblogs.com/xingshansi/p/6621914.html 声明:欢迎被转载,不过记得注明出处哦 ...