Oracle PL/SQL开发入门(第二弹:PL/SQL基本概念)
2017-03-21 22:42
330 查看
什么是PL/SQL
标准的SQL语言提供了定义和操纵数据库对象的能力,但是并没有提供程序设计语言所具有的诸多特性。PL/SQL(Procedural Language/SQL)就是为标准SQL语言添加了过程化功能的一门程序设计语言。这让SQL语句拥有了结构化程序设计的特性,使得开发人员可以直接使用PL/SQL进行复杂业务逻辑的编写。功能特点
结构化程序设计
顺序结构分支结构
循环结构
与SQL语言整合
要注意的是,在PL/SQL代码中只能直接使用DML语句,如果在PL/SQL代码中直接使用SQL的DDL语句,Oracle将会提示绑定错误,例如这样就是错误的:BEGIN CREATE TABLE BOOKS(ID int NOT NULL,BOOKNAME varchar2(100) NULL); END;
执行以上代码会报错,这是由PL/SQL的早起绑定特性所决定的,在编译时PL/SQL引擎发现BOOKS表不存在,会引起编译时错误。如果修改为以下写法,就没问题了:
DECLARE --定义SQL DDL语句 v_SQLStr VARCHAR(200):=' CREATE TABLE BOOKS(ID int NOT NULL,BOOKNAME varchar2(100) NULL) '; BEGIN EXECUTE IMMEDIATE v_SQLStr; --执行DDL语句 END;
面向对象开发
PL/SQL可以基于对象类型来定义对象表,或者将对象类型作为Oracle表列进行保存。模块化应用程序开发
PL/SQL提供块、子程序和包3个程序单元,可以将程序分成多个部分,将复杂的问题划分开来,做到模块化。提高应
4000
用程序性能
PL/SQL的块结构运行一次性向数据库发送多条SQL语句,可以显著的提升应用程序的性能。在使用Java、.NET之类语言开发程序时,往往是一次一条SQL语句的方式操作数据库,这将会产生多次网络传输交互,是的服务器需要使用较多的资源来处理SQL语句,同时产生了一定的网络流量。语言特性
PL/SQL块结构
块分为两种:- 匿名块,没有名称的PL/SQL块,这种块不会保存在数据库中
- 命名块,具有名称的PL/SQL块
命名块又分为三种:
- 使用<<块名称>>进行标识的块
- 由函数或过程组成的子程序块,这种块保存在数据库中
- 数据库触发器块
变量和类型
标量变量:指能存放但是数值的变量,这是最常用的变量。标量变量的数据类型包含数字、字符、日期和布尔类型,比如VARCHAR2、CHAR、NUMBER、DATE等类型。复合变量:指用于存放多个值得变量,比如PL/SQL记录、PL/SQL表、嵌套表及VARRAY等类型。
参照变量:指用于存放数值指针的变量,比如游标变量和对象变量。
LOB变量:指用于存放大批量数据的变量。
例如:
DECLARE v_DeptName VARCHAR2(10); --定义标量变量 v_LoopCounter BINARY_INTEGER; --使用PL/SQL类型定义标量变量 --定义记录类型 TYPE t_Employee IS RECORD (EmpName VARCHAR2(20),EmpNo NUMBER(7),Job VARCHAR2(20)); v_Employee t_Employee; --定义记录类型变量 TYPE csor IS REF CURSOR; --定义游标变量 v_date DATE NOT NULL DEFAULT SYSDATE;--定义变量并指定默认值 BEGIN NULL; END; /
程序控制语句
条件控制语句:IF-THEN-ELSE,CASE-WHEN循环控制语句:LOOP-END简单循环,数字式FOR循环,WHILE循环
过程、函数与包
过程。函数与包都属于命名块,过程和函数统称为子程序。触发器
与包或其他子程序不同的是,触发器不能被显式的调用,而是在数据库时间发生时隐式的运行的,并且触发器不能接收参数。结构化异常处理
异常处理块以EXCEPTION开始。在错误发生时,Oracle预定义的异常会被系统隐式的抛出,对于用户自定义的异常,可以使用RAISE语句手动抛出。当异常被抛出后,异常处理器将捕捉到这些异常,然后执行异常处理代码。集合与记录
集合与记录都是用复合类型。集合允许将类型相同的多个变量当做一个整体进行处理,类似于Java或C语言中的数组,可以同时处理单行多列的数据。
记录允许将多个不同类型的变量当做一个整体进行处理,类似于数据库中的一条记录。一个记录类型可以包含多个简单类型的值或复杂类型的值。
游标
游标是一个指向上下文区域的指针,这个上下文区域是PL/SQL语句块在执行SELECT语句或DML数据操纵语句时分配的 。游标分为两种:- 隐式游标:由PL/SQL自动为DML语句或SELECT-INTO语句分配的游标,包括只返回一条记录的查询操作。
- 显式游标:在PL/SQL块的声明区域中显示定义的,用来处理返回多行记录查询的游标。
动态SQL
PL/SQL是使用早期绑定来执行SQL语句的,早期绑定要求所处理的数据库对象必须存在并且是已知的。动态SQL是指在运行时由字符串拼合而成的SQL,比如在PL/SQL块中不能执行DDL语句和DCL语句,那么可以使用EXECUTE IMMEDIATE来执行动态拼合而成的SQL语句。
相关文章推荐
- 源码-PL/SQL从入门到精通-第二章-PL/SQL基本概念-Part 1
- PL-SQL基本概念
- 源码-PL/SQL从入门到精通-第二章-PL/SQL基本概念-Part 2
- pl/sql之基本概念和块的结构
- PL/SQL的基本概念
- 源码-PL/SQL从入门到精通-第二章-PL/SQL基本概念-Part 3(完)
- PL/SQL几个基本概念
- PL/SQL 学习笔记--PLSQL基本概念
- oracle(02): PL/SQL基本概念,关系运算符,顺序结构,分支结构,循环结构
- Oracle学习:PL_SQL——基本概念
- PL/SQL块基本概念及示例
- oracleday15(授予对象权限级联回收 角色 pl/sql基本概念)
- PL/SQL编程基本概念
- Oracle数据库的基本概念及PL/SQL(DDL)
- PL/SQL DEVELOPER 基本用法详解(转)
- PL/SQL DEVELOPER 基本用法详解-PLSQL
- PL/SQL基本语法
- PL/SQL基本语法(ORACLE)
- PL/SQL 学习笔记(一)----- pl/sql 基本查询与排序
- PL/SQL课程一、 基本查询与排序