您的位置:首页 > 数据库

pl/sql基础知识学习笔记(一)

2016-08-22 10:13 375 查看
PL/SQL Learn (procedural languageSQL)
(一) 基础知识

1.概念

过程语言SQL,结合了Oracle过程语言和结构化查询语言。

优点:

1.具有编程语言的特点,可把一组SQL语句放到一个模块中。

2.可以采用过程语性言控制程序的结构

3.可对程序中的错误进行自动处理。也就是异常处理机制

4.具有更好的可移植性

5.较少了网络交互,有利于提高性能

2.体系结构

PL/SQL引擎用来编译和执行PL/SQL块或子程序,该引擎在oracle服务中。PL/SQL

引擎仅执行过程语句,而将SQL语句发送给SQL语句的执行器。

3.PL/SQL块简介

PL/SQL 是一种块结构的语言,它将一组语句放在一个块中。PL/SQL中可以使用DML语句,

但是不允许直接使用DDL语句,但可通过动态SQL来执行。

一个PL/SQL块由3部分组成:声明部分,执行部分,异常处理部分

[DECLARE] (变量,类型及游标,以及局部的过程存储过程和函数)

BEGIN (过程及sql语句)

[EXCEPTION]

END;
【其中执行部分不能省略】

4.运算符和表达式

:= 赋值号

=> 关系号

.. 范围运算符

|| 字符连接符

5.常量和变量声明

在程序的可执行部分引用变量和常量前,必须对其进行声明。

声明变量的语法:

variablename datatype [ (size) ] [ := initvalue]

其中:datatype 表示变量的SQL或PL/SQL数据类型

size 指定变量的范围

声明常量的语法:

variablename CONSTANT datatyoe := value

PL/SQL 中标识符定义与SQL的要求相同:

1.标识符不能超过30个字符

2.第一个字符必须为字母

3.不区分大小写

4.可使用$ # _ 但是不可以使用减号,空格等

5.不能是SQL保留字

变量命名方法:

程序变量 v_name 程序常量 c_name 游标变量 cursor_name

异常标志 e_name 表类型 name_table_type 表 name_table

记录类型 name_record 绑定变量 g_name

SELECT语句在PL/SQL变为SELECT INTO ,其中查询结果只能返回一条语句并复制到变量中,

返回多条或零条都会报错

编码规则:

1.利用缩进排列实现逻辑结构 ,保留字后出现的列开始缩进三个空格

2.利用大小写增强可读性,保留字大写,专用名称或标识符小写

3.格式化单独语句 ,声明语句中尽量保持声明的数据类型靠近变量名

4.格式化SQL语句

eg:

SELECT INSERT UPADTE DELETE

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

SELECT INSERT INTO UPDATE DELETE

VALUES SET FROM

FROM WHERE WHERE

WHERE INSERT INTO

AND SELECT

OR FROM

GROUP BY WHERE

HAVING

AND

OR

ORDER BY

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

ORACLE 11g中 可以使用PL/SQL块中的赋值语句访问序列 ,提高序列使用的灵活性

6.注释

1 使用 -- 加注释 【针对单行】

2 使用 /* */ 加注释 【一行或多行注释】

建议写法: /*

// 注释内容 (|| 可省略)

*/

********************************************************************************

7 PL/SQL数据类型

1.标量数据类型

包含单个值,无内部组件。包含数字,字符,布尔值和日期时间值

同oracle数据类型的区别 ,同样类型的大小不同,增加了布尔类型

2.LOB数据类型

oracle主要支持BFILE , BLOB , CLOB ,NCLOB

3.属性类型

属性用于引用变量或数据库列的数据类型,以及表示表中的一行记录类型

1) %TYPE 定义一个变量,其数据类型与已经定义的某个数据变量的数据类型相一致

优点:

1. 可不必知道所引用的数据库列的数据类型

2. 所引用的数据库列的数据类型可实时改变,容易保持一致,不需修改PL/SQL程序

2) %ROWTYPE 返回一个记录类型,其数据类型和数据库表的数据结构保持一致

优点:

1. 可以不必知道所引用的数据库中列的个数和数据类型

2. 所引用的数据库中列的个数和数据类型可以实时改变,容易保持一致

使用时没有空格进行分割,紧跟在需要的数据变量的后面

********************************************************************************

8 PL/SQL控制语句

标准的SQL没有流程控制的概念,PL/SQL提供了丰富的流程控制的概念

1. 条件控制

a.IF <表达式> THEN

PL/SQL SQL

ELSIF <其他布尔表达式> THEN

其他语句

ELSE

其他语句

END IF;

b. CASE 条件表达式

WHEN 结果1 THEN

语句1

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

WHEN 结果n THEN

语句n

【ELSE 语句段】

END CASE;

***************************

CASE

WHEN 条件表达式1 THEN

语句1

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

WHEN 条件表达式n THEN

语句n

【ELSE 语句段】

END CASE;

2. 循环控制

使用EXIIT 语句可退出循环,使用EXIT WHEN 则可根据条件跳出循环

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

LOOP

执行的语句;

EXIT WHEN <条件语句> ---- 条件满足,退出循环

END LOOP

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

WHILE <布尔表达式> LOOP

执行的语句;

END LOOP

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

FOR 循环计数器 IN [ REVERSE ] 下限 ... 上限 LOOP

执行的语句;

END LOOP;

3. 顺序控制

包括NULL语句 和 GOTO语句 ,但是 GOTO语句不推荐使用

NULL语句: 一个可执行语句,相当于一个占位符或不执行任何操作的空语句,提高程

序可读性,保证其他语句结构的完整性和正确性。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  plsql