当前位置: 代码迷 >> SQL >> pl/sql(一)
  详细解决方案

pl/sql(一)

热度:92   发布时间:2016-05-05 11:29:31.0
pl/sql(1)

1.PL/SQL概述

PL/SQLOracle对标准SQL规范的扩展,全面支持SQL的数据操作、事务控制等。PL/SQL完全支持SQL数据类型,减少了在应用程序和数据库之间转换数据的操作。

构成PL/SQL程序的基本单位是程序块。程序块由过程、函数和无名块3种形式组成,它们之间可以互相嵌套。

PL/SQL的运行工具有:SQL*PlusPL/SQL developer

 2.PL/SQL程序的基本结构

 

PL/SQL块由四个基本部分组成:声明、执行体开始、异常处理执行体结束。

下面是四个部分的基本结构:

DECLARE —— 可选部分

变量、常量、游标用户定义异常的声明

……

BEGIN —— 必要部分

SQL语句和PL/SQL语句构成的执行程序

……

EXCEPTION —— 可选部分

程序出现异常时,捕捉异常并处理异常

……

END;—— 必须部分

在数据库执行PL/SQL程序时,PL/SQL语句和SQL语句是分别进行解析和执行的。PL/SQL块被数据库内部的PL/SQL引擎提取,将SQL语句取出送给OracleSQL引擎处理,两种语句分别在两种引擎中分析处理,在数据库内部完成数据交互、处理过程


 3.PL/SQL示例


(1)声明变量输出false

(2)根据输入框(&deptno)输入数字进行分组


(3)前后填充


(4)九九乘法表

(5)异常






(6)使用case语句查询emp表,对工资(sal)如果工资大于5000显示‘A’;如果大于3000显示‘B’;如果大于2000显示‘C’,其他显示‘D’。


注意:有些工具会出现中文乱码,解决方案:
在windows中创建一个系统环境变量。


Decode编译进行分类:Decode编码



(7)在dept表中增加字段ecount number ,表示每个部门得到的人数(先添加新的字段(ecount,然后在更新新的字段数据

(8)书写一段pl/sql程序,完成字符串拆分操作
1.用while

2.用loop



4.PL/SQL游标

在PL/SQL中,针对多行多列的数据类型,可以使用游标变量。

PL/SQL的游标指把从数据库中查询出来的数据以临时表的形式存放在内存中.游标可以对存储在内存中的数据进行操作,返回一条或一组记录,或者一条记录都不返回.

(1)隐式游标(在PL/SQL中使用DML语句时自动创建隐式游标)

游标作为一个临时表,可以通过游标的属性来获取游标状态.游标有4个常用的属性:

  1. %ISOPEN:用于判断游标是否已经打开
  2. %FOUND:用于判断游标是否找到记录

  3. %NOTFOUND:与%FOUND相反.
  4. %ROWCOUNT:返回到当前为止已经提取到的实际行数.
                

        

(2)显示游标(有声明)(显式游标在 PL/SQL 块的声明部分定义查询,该查询可以返回多行)




解决方案:

1.


2.


3.


4.



带参数的显示游标(声明显式游标时可以带参数以提高灵活性)



循环游标(循环游标用于简化游标处理代码)


(3)REF 游标和游标变量 (REF 游标和游标变量用于处理运行时动态执行的 SQL 查询)

创建游标变量需要两个步骤:
               声明 REF 游标类型
              声明 REF 游标类型的变量
        用于声明 REF 游标类型的语法为:


TYPE <ref_cursor_name> IS REF CURSOR
[RETURN <return_type>];



根据游标添加sal值



(4)游标异常

在游标使用过程中,一般有可能发生两种异常:
         CURRSOR_ALREADY_OPEN :游标重复打开时异常。


         INVALID_CURSOR:无效的游标异常。

            

(5)综合游标的示例
为emp表中的员工增加工资,如果工资小于6000,每次增加200,;工资大于6000的不增长,直到公司平均工资大于5000



  相关解决方案