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

来源:互联网 发布:mac云盘下载速度慢 编辑:程序博客网 时间:2024/06/11 12:01
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语句: 一个可执行语句,相当于一个占位符或不执行任何操作的空语句,提高程
序可读性,保证其他语句结构的完整性和正确性。

0 0
原创粉丝点击