注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Lable

........................................

 
 
 

日志

 
 

6_PL/SQL  

2011-12-19 11:24:59|  分类: Hibernate |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

一、PL/SQL简介< xmlnamespace prefix ="o" ns ="urn:schemas-microsoft-com:office:office" />

    PL/SQL (Procedural Language/SQL)是一种过程语言,是对SQL的扩展

二、特点:

       SQLPL/SQL编译器的集成,支持SQL所有的语法

       支持CASE语句及表达式的使用

       继承和动态方法分配

       类型进化

       新的日期/时间类型

       PL/SQL的本地编译

       提高了全球化和国际语言支持

       表函数和光标表达式

       多层集合

       对大数据类型提供良好的支持

       对批操作的支持

       MERGE语句,这是一个将插入和更新合并为单个操作的专用语言

三、PL/SQL的开发和运行环境

   Oracle数据库服务器

   Oracle开发工具

四、PL/SQL 编程

1.       语句块

[DECLARE]:声明变量、游标等

BEGIN:程序开始的标识,表示开始执行SQLPL/SQL程序

[EXCEPTION]:异常处理部分

END;程序结束标志

2.       变量和常量

DECLARE v_name [CONSTANT] type [NOT NULL] [:=value]

注意:   变量的声明一定要使用DECLARE关键字

         v_name 代表变量的名称

         CONSTANT 为可选项,表示是否是一个常量

         Type表示变量的数据类型

         [NOT NULL]为可选项,表示变量不能为空

         [:=value]表示给变量赋予初值

命名规则:首字母必须是英文字母,其后可以是字母、数字或者特殊字符$#和下             划线

          变量名长度不超过30个字符

          变量名中不能有空格

作用域:和java中的一样

3.       表达式和运算符

     表达式

         数值型表达式

         字符型表达式

         日期型表达式

         布尔型表达式

     运算符

         算术运算符:实现一般的数学运算

         关系运算符:实现判断比较结果;例如大于、小于、等于

         逻辑运算符:实现逻辑与、或、非得判断

         其他符号:在程序中应用到的具有特殊用途的符号,例如注释、赋值、点运算

4.       流程控制

       条件控制:

¨       IF-THEN

¨       IF-THEN-ELSE

¨       IF-THEN-ELSIF

¨       CASE-WHEN-THEN

       循环控制:

¨       LOOP   END LOOP 循环

¨       WHILE 条件 LOOP   END LOOP;

¨       FOR-LOOP   for i in 1..10 loop … end loop;

五、动态sQL

       概念:是指在编译器期间,SQL语句是不确定的,并且在运行时不允许放生变化

       应用场合:

       要执行一个DDL语句时,所谓DDL语句就是指要执行一个creategrantalter等数据库操作,这些语句在PL/SQL中不能呗执行

       需要增加程序的灵活控制,需要根据运行时的具体情况来选择和确定操作的对象,或者需要根据程序运行情况在查询语句中创建不同的查询条件等。

       使用包DBMS_SQL动态执行SQL语句时

       使用本地动态SQL来执行

       EXCUTE IMMEDIATE语句

       执行DDL

       执行PL/SQL语句块

       绑定变量

DECLARE

    plsql varchar2(200);

    t_name varchar2(20) := ‘John’

    t_id integer := ‘< xmlnamespace prefix ="st1" ns ="urn:schemas-microsoft-com:office:smarttags" />1002’

BEGIN

    Plsql := ‘insert into temp_table values (:1,:2)’;

    EXECUTE IMMEDIATE plsql using t_id,t_name;

END;

六、PL/SQL的异常处理

    PL/SQL的异常处理结构

        //定义异常

        DECLARE exception_name

        //触发异常

        RAISE exception_name

        //处理异常

        EXCEPTION

           WHEN exception_name THEN

              Statements;

七、游标

       概念:游标(CURSOR)是用来处理使用SELECT 语句从数据库中检索到的多行记录的工具,它可以命名一个工作区,来存取该工作区的数据。

       分类:隐身游标(返回一条记录)、显示游标(多条记录)

       属性:

%FOUND

用于检验游标是否成功,成功则返回true

%ISOPEN

用于判断游标是否已经被打开

%NOTFOUND

%FOUND的作用相反

%ROWCOUNT

循环执行游标读取数据时,返回检索出的记录数据的行数

       使用过程

       声明游标

       打开游标

       提取游标

       关闭游标

       游标的循环读取

如果使用FOR循环,则可以省去打开和关闭游标的操作

DECLARE

     fname varchar2(20);

     lname varchar2(20);

     CURSOR t_student is select firstname,LASTNAME from students where id<=1005

BEGIN

     FOR t_stu IN t_student LOOP

        fname := t_stu.firstname;

        lname := t_stu.lastname;

        dbms_output.put_line(‘学员姓名:’ || fname || ‘’|| lname);;

     END LOOP;

END

  评论这张
 
阅读(15)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017