zoukankan      html  css  js  c++  java
  • PL/SQL编程

    PL/SQL编程

    一:什么是PL/SQL

    (1.)PL/SQL体系结构:
             PL/SQL引擎用来编译和执行,PL/SQL块或子程序,该引擎驻留在Oracle服务器中。

    (2.)PL/SQL块简介

             PL/SQL是一种块结构语音,它将一组语句块放在一个快中。

    (3.)运算符和表达式:

    PL/SQL语音支持操作符包含关系运算符,一般运算符和逻辑运算符,与SQL语音类似。

    (4.)常量和变量声明

             在PL/SQL块的可执行部分引用变量和常量前,必须先对其进行声明。变量和PL/SQL块的部分声明,在PL/SQ块的 可执行部分被使用。语法如下:

    Variable_name  data_type   变量范围    变量的初始值;

    (5.)注释:

             在PL/SQL可以使用如下两种注释符号:

             ‘--’双减号

             ‘/*   */’

     

             在PL/SQL快中的可执行部分引用的变量和常量前,必须先对其声明

    语法:variable_name  data_type[(size)][:=init_value];

    变量名称  数据类型   size  指定变量的初始值

    二:PL/SQL数据类型

    (1.)LOB数据类型

    (2.)属性类型:

    %Type:定义一个变量,其数据类型与已经定义的某个数据变量(尤其是表的某一列)的数据类型相一致这时可以使用%Type (优点:可以不必知道所引用的数据库列的数据类型。所引用的数据类型可以实现时改变,容易保持一致,不必修改PL/SQL程序)    

    %ROWTYPE:返回一个记录类型,其数据类型和数据库表的数据结构相一致,这时可以使用%ROWTYPE.(优点:可以不必知道所引用数据库列的个数和数据类型。所引用的数据库中列的个数和数据库类型可以实现改变,容易保持一致,不用修改PL/SQL程序)

    三:PL/SQL控制语句

    (1.)条件控制:if语句如下:

             If   布尔表达式   then

     PL/SQL和SQL语句

    End  if;

    --------------------------------------------

    If   布尔表达式   then

     PL/SQL和SQL语句

    Elst

       其他语句

    End  if;

    ---------------------------------------------

    If   布尔表达式   then

     PL/SQL和SQL语句

    Elsif  其他布尔表达式   then

             其他语句

    Elsif   其他布尔表达式   then

    Else

             其他语句

    End  if;

    (2.)case  语法如下

    ----------------格式1----------------

    Case   条件表达式

    When  条件表达式1  then

    语句段1

    When   条件表达式2   then

    语句段2

    …………….

    When   条件表达式n   then

    语句段n

    End    case;

    ----------------格式2----------------

    Case   条件表达式

    When  条件表达式1  then

    语句段1

    When   条件表达式2   then

    语句段2

    …………….

    When   条件表达式n   then

    语句段n

    Else  语句段

    End    case;

    (3.)循环控制:Loop循环语法如下:

             Loop

                       要执行的语句;

                       Exit  when  条件语句   -------条件满足时跳出循环

                       End   loop;

    -------------------------------------------------------

    While循环语法如下:

      While    布尔表达式  loop

    要执行的语句;

    End  loop;

    --------------------------------------------

    For循环语法如下

    For  循环计数器  In  reverse   下限…….上限   loop

    要执行的语句

    End   loop;

    四:异常处理:

    (1.)预定义异常:

     

    (2.)处理用户自定义异常:

    在PL/SQL块的定义部分定义的异常情况

        异常情况    exceptlon

    抛出异常情况:

    Raise  异常情况

    在PL/SQL块的异常情况处理部分对异常情况做出的相应处理

    五:游标:

    (1.)游标的分类

    隐式游标:返回单行记录

    显示游标:返回多行记录

    显示游标使用步骤:

    (1.)声明游标:cursor  名称  is

    (2.)打开游标:open   名称;

    (3.)提取游标:fetch   名称   into  variables;

    (4.)关闭游标: close   名称;

    (5.)使用循环游标简化游标的读取语法:

    For   声明记录变量   in   名称

    Loop

             Executable_statements

    End  loop;

    (4.)No_data_found和notfound的区别

             Select………into语句返回0条记录和多条记录是触发no_data_found

             当update或delete语句的where子句未找到时,触发%notfound

             在提取循环中用%notfound或%found来确定循环的退出条件,而不用no_data_fuond

    六:存储过程:

    子程序的组成:

    (1.)声明部分:类型,游标,常量,变量,异常,嵌套子程序声明

    (2.)可执行部分:可执行部分包括赋值,控制执行过程存储过程中出现的异常

    (3.)异常处理部分:异常处理程序,负责处理执行存储过程中出现的异常。

    子程序的优点如下:

    模块化,可重用性,可维护性,安全性。

    (4.)存储过程用法:

    1.创建存储过程:语法如下:

    Create    语句    procedure    存储名称

                       参数列表

    Is|as

             局部声明

    Begin  

             可执行语句
    exception

             异常处理程序

    End    存储名称;

    2.调用存储过程

    (1.)用命令调用

    语法如下:

    Exce     过程名称   参数列表;

    (2.)参数的传递方式三种:

    按位置传递

    Exec  add_emp(1111,‘mary’,2000,’‘manager’,10);

    按名称传递

    混合方式传递

    3.存储过程参数模式语法如下:

    存储名称   in|out|in  out   datatype   :=赋值;

    4.存储过程访问权限

    -----授予a执行emp的权限

    Grant  execute  no   add_emp   to   a

    -------撤销权限

    Revoke   execute  on  add_emp   from   a;

    5.删除存储过程

    Drop   procedure   存储名称;

    七:存储过程的调试与跟踪:

    (1.)在sql*plus下调试

    (2.)用户PL/SQL  Developer工具调试

    其中on_flag有三种情况:

    *0表示过程执行成功但无提示信息。

    *大于0表示过程执行成功但有提示信息。

    *小于1表示过程执行失败且有提示信息。

  • 相关阅读:
    Nested Loops(嵌套循环)
    sql语句解析顺序和执行顺序
    log4j2常见配置
    log4j常见配置
    logback常见配置
    cannot change version of project facet Dynamic web module to 2.5
    oracle按照in的顺序进行排序
    win7下PLSQL Developer提示“ORA-12154: TNS:无法解析指定的连接标识符”
    前端PHP入门-005-爱情是常量还是变量
    前端PHP入门-006-表达式和运算符
  • 原文地址:https://www.cnblogs.com/dkz1/p/7898852.html
Copyright © 2011-2022 走看看