PLSQL基础教程 (1)
- 格式:doc
- 大小:542.39 KB
- 文档页数:64
PL/SQL最详细教程PL/SQL是ORACLE对标准数据库语言的扩展,ORACLE公司已经将PL/SQL整合到ORACLE 服务器和其他工具中了,近几年中更多的开发人员和DBA开始使用PL/SQL,本文将讲述PL/SQL基础语法,结构和组件、以及如何设计并执行一个PL/SQL程序。
PL/SQL的优点从版本6开始PL/SQL就被可靠的整合到ORACLE中了,一旦掌握PL/SQL的优点以及其独有的数据管理的便利性,那么你很难想象ORACLE缺了PL/SQL的情形。
PL/SQL 不是一个独立的产品,他是一个整合到ORACLE服务器和ORACLE工具中的技术,可以把PL/SQL看作ORACLE服务器内的一个引擎,sql语句执行者处理单个的sql语句,PL/SQL引擎处理PL/SQL程序块。
当PL/SQL程序块在PL/SQL引擎处理时,ORACLE服务器中的SQL语句执行器处理pl/sql程序块中的SQL语句。
PL/SQL的优点如下:. PL/SQL是一种高性能的基于事务处理的语言,能运行在任何ORACLE环境中,支持所有数据处理命令。
通过使用PL/SQL程序单元处理SQL的数据定义和数据控制元素。
. PL/SQL支持所有SQL数据类型和所有SQL函数,同时支持所有ORACLE对象类型. PL/SQL块可以被命名和存储在ORACLE服务器中,同时也能被其他的PL/SQL程序或SQL命令调用,任何客户/服务器工具都能访问PL/SQL程序,具有很好的可重用性。
. 可以使用ORACLE数据工具管理存储在服务器中的PL/SQL程序的安全性。
可以授权或撤销数据库其他用户访问PL/SQL程序的能力。
. PL/SQL代码可以使用任何ASCII文本编辑器编写,所以对任何ORACLE能够运行的操作系统都是非常便利的. 对于SQL,ORACLE必须在同一时间处理每一条SQL语句,在网络环境下这就意味作每一个独立的调用都必须被oracle服务器处理,这就占用大量的服务器时间,同时导致网络拥挤。
PL/SQL程序设计目录第一章PL/SQL 程序设计简介 (4)§1.2SQL与PL/SQL (4)§1.2.1 什么是PL/SQL? (4)§1.2.1 PL/SQL的好处 (4)§1.2.2 PL/SQL 可用的SQL语句 (5)§1.3运行PL/SQL程序 (5)第二章PL/SQL块结构和组成元素 (6)§2.1PL/SQL块 (6)§2.2PL/SQL结构 (6)§2.3标识符 (6)§2.4PL/SQL变量类型 (7)§2.4.1 变量类型 (7)§2.4.2 复合类型 (9)§2.4.3 使用%ROWTYPE (11)§2.4.4 LOB类型* (11)§2.4.5 Bind 变量 (11)§2.4.6 INDEX BY TABLES (12)§2.4.7 数据类型的转换* (13)§2.5运算符和表达式(数据定义) (13)§2.5.1 关系运算符 (13)§2.5.2 一般运算符 (13)§2.5.3 逻辑运算符 (14)§2.6变量赋值 (14)§2.6.1 字符及数字运算特点 (14)§2.6.2 BOOLEAN 赋值 (14)§2.6.3 数据库赋值 (14)§2.6.4 可转换的类型赋值 (15)§2.7变量作用范围及可见性 (15)§2.8注释 (16)§2.9简单例子 (17)§2.9.1 简单数据插入例子 (17)§2.9.2 简单数据删除例子 (17)第三章PL/SQL流程控制语句 (18)§3.1条件语句 (18)§3.2CASE表达式 (19)§3.3循环 (19)§3.3标号和GOTO (21)§3.4NULL语句 (21)第四章游标的使用 (23)§4.1游标概念 (23)§4.1.1 处理显式游标 (23)§4.1.2 处理隐式游标 (26)§4.1.3 游标修改和删除操作 (27)第五章异常错误处理 (29)§5.1异常处理概念 (29)§5.1.1 预定义的异常处理 (29)§5.1.2 非预定义的异常处理 (30)§5.1.3 用户自定义的异常处理 (31)§5.1.4 用户定义的异常处理 (32)§5.2异常错误传播 (33)§5.2.1 在执行部分引发异常错误 (33)§5.2.2 在声明部分引发异常错误 (34)§5.3异常错误处理编程 (34)§5.4在PL/SQL中使用SQLCODE,SQLERRM (35)第六章存储函数和过程 (36)§6.1引言 (36)§6.2创建函数 (36)§6.3存储过程 (39)§6.3.1 创建过程 (39)§6.3.2 调用存储过程 (40)§6.3.3 开发存储过程步骤 (42)§6.3.4 与过程相关数据字典 (43)第七章包的创建和应用 (44)§7.1引言 (44)§7.2包的定义 (44)§7.3包的开发步骤 (45)§7.4包定义的说明 (45)§7.5子程序重载 (48)§7.6删除过程、函数和包 (50)§7.7包的管理 (50)第八章触发器 (51)§8.1触发器类型 (51)§8.1.1 DML触发器 (51)§8.1.2 替代触发器 (51)§8.1.3 系统触发器 (51)§8.2创建触发器 (51)§8.2.1 触发器触发次序 (53)§8.2.2 创建DML触发器 (53)§8.2.3 创建替代(Instead_of)触发器 (54)§8.2.3 创建系统事件触发器 (54)§8.2.4 系统触发器事件属性 (55)§8.2.5 使用触发器谓词 (56)§8.2.6 重新编译触发器 (56)§8.3删除和使能触发器 (56)§8.4触发器和数据字典 (57)§8.5数据库触发器的应用举例 (57)第一章PL/SQL 程序设计简介PL /SQL是一种高级数据库程序设计语言,该语言专门用于在各种环境下对ORACLE数据库进行访问。
PL/SQL程序设计目录第一章PL/SQL 程序设计简介 (4)§1.2SQL与PL/SQL (4)§1.2.1 什么是PL/SQL? (4)§1.2.1 PL/SQL的好处 (4)§1.2.2 PL/SQL 可用的SQL语句 (5)§1.3运行PL/SQL程序 (5)第二章PL/SQL块结构和组成元素 (6)§2.1PL/SQL块 (6)§2.2PL/SQL结构 (6)§2.3标识符 (6)§2.4PL/SQL变量类型 (7)§2.4.1 变量类型 (7)§2.4.2 复合类型 (9)§2.4.3 使用%ROWTYPE (11)§2.4.4 LOB类型* (11)§2.4.5 Bind 变量 (11)§2.4.6 INDEX BY TABLES (12)§2.4.7 数据类型的转换* (13)§2.5运算符和表达式(数据定义) (13)§2.5.1 关系运算符 (13)§2.5.2 一般运算符 (13)§2.5.3 逻辑运算符 (14)§2.6变量赋值 (14)§2.6.1 字符及数字运算特点 (14)§2.6.2 BOOLEAN 赋值 (14)§2.6.3 数据库赋值 (14)§2.6.4 可转换的类型赋值 (15)§2.7变量作用范围及可见性 (15)§2.8注释 (16)§2.9简单例子 (17)§2.9.1 简单数据插入例子 (17)§2.9.2 简单数据删除例子 (17)第三章PL/SQL流程控制语句 (18)§3.1条件语句 (18)§3.2CASE表达式 (19)§3.3循环 (19)§3.3标号和GOTO (21)§3.4NULL语句 (21)第四章游标的使用 (23)§4.1游标概念 (23)§4.1.1 处理显式游标 (23)§4.1.2 处理隐式游标 (26)§4.1.3 游标修改和删除操作 (27)第五章异常错误处理 (29)§5.1异常处理概念 (29)§5.1.1 预定义的异常处理 (29)§5.1.2 非预定义的异常处理 (30)§5.1.3 用户自定义的异常处理 (31)§5.1.4 用户定义的异常处理 (32)§5.2异常错误传播 (33)§5.2.1 在执行部分引发异常错误 (33)§5.2.2 在声明部分引发异常错误 (34)§5.3异常错误处理编程 (34)§5.4在PL/SQL中使用SQLCODE,SQLERRM (35)第六章存储函数和过程 (36)§6.1引言 (36)§6.2创建函数 (36)§6.3存储过程 (39)§6.3.1 创建过程 (39)§6.3.2 调用存储过程 (40)§6.3.3 开发存储过程步骤 (42)§6.3.4 与过程相关数据字典 (43)第七章包的创建和应用 (44)§7.1引言 (44)§7.2包的定义 (44)§7.3包的开发步骤 (45)§7.4包定义的说明 (45)§7.5子程序重载 (48)§7.6删除过程、函数和包 (50)§7.7包的管理 (50)第八章触发器 (51)§8.1触发器类型 (51)§8.1.1 DML触发器 (51)§8.1.2 替代触发器 (51)§8.1.3 系统触发器 (51)§8.2创建触发器 (51)§8.2.1 触发器触发次序 (53)§8.2.2 创建DML触发器 (53)§8.2.3 创建替代(Instead_of)触发器 (54)§8.2.3 创建系统事件触发器 (54)§8.2.4 系统触发器事件属性 (55)§8.2.5 使用触发器谓词 (56)§8.2.6 重新编译触发器 (56)§8.3删除和使能触发器 (56)§8.4触发器和数据字典 (57)§8.5数据库触发器的应用举例 (57)第一章PL/SQL 程序设计简介PL /SQL是一种高级数据库程序设计语言,该语言专门用于在各种环境下对ORACLE数据库进行访问。
第1章PLSQL基础知识Oracle数据库PL/SQL开发----PL/SQL基础知识章节目标了解/的基本概念了解PL/SQL的基本概念掌握PL/SQL块的基本组成区分/变量和非/变量?区分PL/SQL变量和非PL/SQL变量?掌握如何声明变量掌握如何对变量进行赋值掌握%TYPE的使用理解在/SQ中SQ语句的作用?理解在PL/SQL中SQL语句的作用本章主要内容知识点掌握程度难易程度项目介绍介绍背景项目了解为什么使用PL/SQL 什么是PL/SQL 理解PL/SQL的优点了解PL/SQL结构块类型了解理解块结构变量声明语法掌握数据类型:标量类型掌握数据类型:复合类型了解数据类型外部变量数据类型:外部变量了解变量赋值掌握函数及注释注释掌握PL/SQL函数的应用:有效函数掌握PL/SQL函数的应用:无效函数掌握与Oracle的交互PL/SQL中的SELECT语句掌握PL/SQL中的DML语句掌握PL/SQL中的事务处理语句掌握PL/SQL概述什么是PL/SQL发专用的种程序设计?PL/SQL是由Oracle开发,专用于Oracle 的一种程序设计语言PL代表Procedural LanguageProcedural LanguageSQL代表Structured Query LanguagePL/SQL是Oracle数据库对SQL语句的扩展,增加了编程语言的特点PL/SQL 包含过程化语句和SQL语句数据操作和查询语句被包含在/Q代码的程序单元中?PL/SQL(PL/SQL块),经过逻辑判断、循环等操作完成复杂的功能或者计算.PL/SQL的优点改善了性能PL/SQL以整个语句块发送给服务器,这个过程在单次调用中完成,降低了网络拥挤。
而如果不使用PL/SQL,每条SQL语句都有单独的传输交互,在网络环境下占用大量的服务器时间,同时导致网络拥挤。
服务器时间同时导致网络拥挤可重用性PL/SQL能运行在任何ORACLE环境中(不论它的操作系统和平台),在其他ORACLE能够运行的操作系统上无需修改代码。
PL/SQL教程PL/SQL是ORACLE对标准数据库语言的扩展,ORACLE公司已经将PL/SQL整合到O RACLE 服务器和其他工具中了,近几年中更多的开发人员和DBA开始使用PL/SQL,本文将讲述PL/SQL基础语法,结构和组件、以及如何设计并执行一个PL/SQL程序。
PL/SQL的优点从版本6开始PL/SQL就被可靠的整合到ORACLE中了,一旦掌握PL/SQL的优点以及其独有的数据管理的便利性,那么你很难想象ORACLE缺了PL/SQL的情形。
PL/SQL 不是一个独立的产品,他是一个整合到ORACLE服务器和ORACLE工具中的技术,可以把PL/SQL看作ORACLE服务器内的一个引擎,sql语句执行者处理单个的sql语句,PL /SQL引擎处理PL/SQL程序块。
当PL/SQL程序块在PL/SQL引擎处理时,ORACLE服务器中的SQL语句执行器处理pl/sql程序块中的SQL语句。
PL/SQL的优点如下:. PL/SQL是一种高性能的基于事务处理的语言,能运行在任何ORACLE环境中,支持所有数据处理命令。
通过使用PL/SQL程序单元处理SQL的数据定义和数据控制元素。
. PL/SQL支持所有SQL数据类型和所有SQL函数,同时支持所有ORACLE对象类型. PL/SQL块可以被命名和存储在ORACLE服务器中,同时也能被其他的PL/SQL程序或SQL命令调用,任何客户/服务器工具都能访问PL/SQL程序,具有很好的可重用性。
. 可以使用ORACLE数据工具管理存储在服务器中的PL/SQL程序的安全性。
可以授权或撤销数据库其他用户访问PL/SQL程序的能力。
. PL/SQL代码可以使用任何ASCII文本编辑器编写,所以对任何ORACLE能够运行的操作系统都是非常便利的. 对于SQL,ORACLE必须在同一时间处理每一条SQL语句,在网络环境下这就意味作每一个独立的调用都必须被oracle服务器处理,这就占用大量的服务器时间,同时导致网络拥挤。
PL/SQL基本操作手册PL/SQL(Procedural Language/Structured Query Language)是一种基于SQL 语言的过程编程语言,它在Oracle数据库中非常常见。
本文将介绍PL/SQL的基本操作,如变量、控制语句、游标等。
变量和常量变量可以使用DECLARE语句声明。
在代码中,变量必须指定它们的类型,例如NUMBER、VARCHAR2或BOOLEAN。
DECLAREv_employee_id NUMBER:=100;v_employee_name VARCHAR2(50) :='John Doe';v_is_hired BOOLEAN:=TRUE;BEGIN-- code goes hereEND;常量是一个不可变的参数,可以使用CONSTANT关键字定义。
常量的值不会在程序中更改。
DECLAREc_tax_rate CONSTANT NUMBER(4, 2) :=0.08;BEGIN-- code goes hereEND;控制语句控制语句提供了决策和循环结构。
IF语句IF语句用于对一个表达式进行测试,以确定哪个分支应该执行。
IF expression THEN-- code goes hereELSIF expression THEN-- code goes hereELSE-- code goes hereEND IF;CASE语句CASE语句用于检查多个可能的条件。
CASE expressionWHEN value1 THEN-- code goes hereWHEN value2 THEN-- code goes hereELSE-- code goes hereEND CASE;LOOP语句LOOP语句用于无限的循环,可以通过某些条件来终止循环。
LOOP-- code goes hereEXIT WHEN expression;END LOOP;WHILE语句WHILE语句用于执行一系列语句,只要指定条件为TRUE。
第1章用PLSQL连接Oracle数据库PLSQL只能用来连接Oracle数据库(不象PB还可以连接JDBC、ODBC),所以必须首先安装并配置Oracle客户端。
§1.1初次登录PLSQL:运行PLSQL通过如下界面连接Oracle数据库:Database的下拉列表中自动列出了Oracle客户端配置的所有服务名。
选择要连接的Oracle服务名,并输入用户名/密码。
点击ok进行连接。
§1.2登录信息保存功能设置:如果设置了登录信息保存功能,可以通过以下方式连接数据库,而不必每次输入用户名/密码。
点击,在下拉列表中选择之前保存的数据库登录信息,直接进行连接。
登录信息保存功能设置:进入PLSQL后,在菜单区点击右键,出现如下PLSQL配置界面。
将Store with password 选中即可,这样第一次通过用户名/密码登录某数据库后,下次就不用再输入用户名/密码了。
§1.3进入PLSQL后切换数据库连接:点击,选择要连接的数据库即可完成切换。
第2章PLSQL中编写SQL语句并执行点击,并选择SQL Window进入SQL语句编写界面,如下:点击,执行SQL语句,页面右下方出现结果列表。
如下图:(执行快捷键为:F8)点击,使结果全部呈现。
第3章PLSQL中查看数据库表结构§3.1查看表结构:在如下界面,按住Ctrl键并将鼠标移动到一个表名,此时表名变了颜色:点击表名,便可显示表结构,如下图:§3.2表结构窗口和SQL编写窗口切换:在Tools菜单中,选中Window List,此时会新打开一个窗口,将其放置到左下脚,窗口中罗列了右下方操作区打开的所有窗口,通过选择可以进行窗口切换。
也可通过以下方式进行切换:在Window菜单最下方罗列了操作区打开的所有窗口,通过选择可以进行窗口切换。
第4章PLSQL中SQL语句的注释选取想要注释的语句,点击进行注释,如下:结果如下:取消注释点击。
Oracle数据库PL/SQL开发----PL/SQL基础知识章节目标了解/的基本概念•了解PL/SQL的基本概念•掌握PL/SQL块的基本组成区分/变量和非/变量•区分PL/SQL变量和非PL/SQL变量•掌握如何声明变量•掌握如何对变量进行赋值•掌握%TYPE的使用理解在/SQ中SQ语句的作用•理解在PL/SQL中SQL语句的作用本章主要内容知识点掌握程度难易程度项目介绍介绍背景项目了解为什么使用PL/SQL 什么是PL/SQL 理解PL/SQL的优点了解PL/SQL结构块类型了解理解块结构变量声明语法掌握数据类型:标量类型掌握数据类型:复合类型了解数据类型外部变量数据类型:外部变量了解变量赋值掌握函数及注释注释掌握PL/SQL函数的应用:有效函数掌握PL/SQL函数的应用:无效函数掌握与Oracle的交互PL/SQL中的SELECT语句掌握PL/SQL中的DML语句掌握PL/SQL中的事务处理语句掌握PL/SQL概述什么是PL/SQL发专用的种程序设计•PL/SQL是由Oracle开发,专用于Oracle的一种程序设计语言PL代表Procedural Language•Procedural Language•SQL代表Structured Query Language•PL/SQL是Oracle数据库对SQL语句的扩展,增加了编程语言的特点•PL/SQL 包含过程化语句和SQL语句数据操作和查询语句被包含在/Q代码的程序单元中•PL/SQL(PL/SQL块),经过逻辑判断、循环等操作完成复杂的功能或者计算.PL/SQL的优点•改善了性能PL/SQL以整个语句块发送给服务器,这个过程在单次调用中完成,降低了网络拥挤。
而如果不使用PL/SQL,每条SQL语句都有单独的传输交互,在网络环境下占用大量的服务器时间,同时导致网络拥挤。
服务器时间同时导致网络拥挤•可重用性PL/SQL能运行在任何ORACLE环境中(不论它的操作系统和平台),在其他ORACLE能够运行的操作系统上无需修改代码。
PL/SQL程序设计目录第一章PL/SQL 程序设计简介 (4)§1.2SQL与PL/SQL (4)§1.2.1 什么是PL/SQL? (4)§1.2.1 PL/SQL的好处 (4)§1.2.2 PL/SQL 可用的SQL语句 (5)§1.3运行PL/SQL程序 (5)第二章PL/SQL块结构和组成元素 (6)§2.1PL/SQL块 (6)§2.2PL/SQL结构 (6)§2.3标识符 (6)§2.4PL/SQL变量类型 (7)§2.4.1 变量类型 (7)§2.4.2 复合类型 (9)§2.4.3 使用%ROWTYPE (11)§2.4.4 LOB类型* (11)§2.4.5 Bind 变量 (12)§2.4.6 INDEX BY TABLES (12)§2.4.7 数据类型的转换* (14)§2.5运算符和表达式(数据定义) (14)§2.5.1 关系运算符 (14)§2.5.2 一般运算符 (14)§2.5.3 逻辑运算符 (14)§2.6变量赋值 (15)§2.6.1 字符及数字运算特点 (15)§2.6.2 BOOLEAN 赋值 (15)§2.6.3 数据库赋值 (15)§2.6.4 可转换的类型赋值 (16)§2.7变量作用范围及可见性 (16)§2.8注释 (17)§2.9简单例子 (18)§2.9.1 简单数据插入例子 (18)§2.9.2 简单数据删除例子 (18)第三章PL/SQL流程控制语句 (19)§3.1条件语句 (19)§3.2CASE表达式 (20)§3.3循环 (20)§3.3标号和GOTO (22)§3.4NULL语句 (23)第四章游标的使用 (24)§4.1游标概念 (24)§4.1.1 处理显式游标 (24)§4.1.2 处理隐式游标 (27)§4.1.3 游标修改和删除操作 (28)第五章异常错误处理 (30)§5.1异常处理概念 (30)§5.1.1 预定义的异常处理 (30)§5.1.2 非预定义的异常处理 (31)§5.1.3 用户自定义的异常处理 (32)§5.1.4 用户定义的异常处理 (33)§5.2异常错误传播 (35)§5.2.1 在执行部分引发异常错误 (35)§5.2.2 在声明部分引发异常错误 (35)§5.3异常错误处理编程 (36)§5.4在PL/SQL中使用SQLCODE,SQLERRM (36)第六章存储函数和过程 (38)§6.1引言 (38)§6.2创建函数 (38)§6.3存储过程 (41)§6.3.1 创建过程 (41)§6.3.2 调用存储过程 (42)§6.3.3 开发存储过程步骤 (44)§6.3.4 与过程相关数据字典 (45)第七章包的创建和应用 (46)§7.1引言 (46)§7.2包的定义 (46)§7.3包的开发步骤 (47)§7.4包定义的说明 (47)§7.5子程序重载 (50)§7.6删除过程、函数和包 (52)§7.7包的管理 (52)第八章触发器 (53)§8.1触发器类型 (53)§8.1.1 DML触发器 (53)§8.1.2 替代触发器 (53)§8.1.3 系统触发器 (53)§8.2创建触发器 (53)§8.2.1 触发器触发次序 (55)§8.2.2 创建DML触发器 (55)§8.2.3 创建替代(Instead_of)触发器 (56)§8.2.3 创建系统事件触发器 (57)§8.2.4 系统触发器事件属性 (57)§8.2.5 使用触发器谓词 (58)§8.2.6 重新编译触发器 (59)§8.3删除和使能触发器 (59)§8.4触发器和数据字典 (59)§8.5数据库触发器的应用举例 (60)第一章PL/SQL 程序设计简介PL /SQL是一种高级数据库程序设计语言,该语言专门用于在各种环境下对ORACLE数据库进行访问。
由于该语言集成于数据库服务器中,所以PL/SQL 代码可以对数据进行快速高效的处理。
除此之外,可以在ORACLE数据库的某些客户端工具中,使用PL/SQL语言也是该语言的一个特点。
本章的主要内容是讨论引入PL/SQL语言的必要性和该语言的主要特点,以及了解PL/SQL语言的重要性和数据库版本问题。
还要介绍一些贯穿全书的更详细的高级概念,并在本章的最后就我们在本书案例中使用的数据库表的若干约定做一说明。
本章主要重点:●PL/SQL概述●PL/SQL块结构●PL/SQL流程●运算符和表达式●游标●异常处理●数据库存储过程和函数●包●触发器§1.2 SQL与PL/SQL§1.2.1 什么是PL/SQL?PL/SQL是Procedure Language & Structured Query Language 的缩写。
ORACLE的SQL是支持ANSI(American national Standards Institute)和ISO92 (International Standards Organization)标准的产品。
PL/SQL是对SQL语言存储过程语言的扩展。
从ORACLE6以后,ORACLE的RDBMS附带了PL/SQL。
它现在已经成为一种过程处理语言,简称PL/SQL。
目前的PL/SQL包括两部分,一部分是数据库引擎部分;另一部分是可嵌入到许多产品(如C语言,JAVA语言等)工具中的独立引擎。
可以将这两部分称为:数据库PL/SQL和工具PL/SQL。
两者的编程非常相似。
都具有编程结构、语法和逻辑机制。
工具PL/SQL另外还增加了用于支持工具(如ORACLE Forms)的句法,如:在窗体上设置按钮等。
本章主要介绍数据库PL/SQL内容。
§1.2.1 PL/SQL的好处§1.2.1.1 有利于客户/服务器环境应用的运行对于客户/服务器环境来说,真正的瓶颈是网络上。
无论网络多快,只要客户端与服务器进行大量的数据交换。
应用运行的效率自然就回受到影响。
如果使用PL/SQL进行编程,将这种具有大量数据处理的应用放在服务器端来执行。
自然就省去了数据在网上的传输时间。
§1.2.1.2 适合于客户环境PL/SQL由于分为数据库PL/SQL部分和工具PL/SQL。
对于客户端来说,PL/SQL可以嵌套到相应的工具中,客户端程序可以执行本地包含PL/SQL部分,也可以向服务发SQL命令或激活服务器端的PL/SQL程序运行。
§1.2.2 PL/SQL 可用的SQL语句PL/SQL是ORACLE系统的核心语言,现在ORACLE的许多部件都是由PL/SQL写成。
在PL/SQL中可以使用的SQL语句有:INSERT,UPDATE,DELETE,SELECT INTO,COMMIT,ROLLBACK,SAVEPOINT。
提示:在PL/SQL中只能用SQL语句中的DML 部分,不能用DDL 部分,如果要在PL/SQL中使用DDL(如CREATE table 等)的话,只能以动态的方式来使用。
●ORACLE 的PL/SQL 组件在对PL/SQL 程序进行解释时,同时对在其所使用的表名、列名及数据类型进行检查。
●PL/SQL 可以在SQL*PLUS 中使用。
●PL/SQL 可以在高级语言中使用。
●PL/SQL可以在ORACLE的开发工具中使用。
●其它开发工具也可以调用PL/SQL编写的过程和函数,如Power Builder等都可以调用服务器端的PL/SQL过程。
§1.3 运行PL/SQL程序PL/SQL程序的运行是通过ORACLE中的一个引擎来进行的。
这个引擎可能在ORACLE的服务器端,也可能在ORACLE 应用开发的客户端。
引擎执行PL/SQL中的过程性语句,然后将SQL语句发送给数据库服务器来执行。
再将结果返回给执行端。
第二章PL/SQL块结构和组成元素§2.1 PL/SQL块PL/SQL程序由三个块组成,即声明部分、执行部分、异常处理部分。
PL/SQL块的结构如下:DECLARE/* 声明部分: 在此声明PL/SQL用到的变量,类型及游标,以及局部的存储过程和函数*/BEGIN/* 执行部分: 过程及SQL 语句, 即程序的主要部分*/ EXCEPTION/* 执行异常部分: 错误处理*/END;其中执行部分是必须的。
PL/SQL块可以分为三类:1. 无名块:动态构造,只能执行一次。
2. 子程序:存储在数据库中的存储过程、函数及包等。
当在数据库上建立好后可以在其它程序中调用它们。
3. 触发器:当数据库发生操作时,会触发一些事件,从而自动执行相应的程序。
§2.2 PL/SQL结构●PL/SQL块中可以包含子块;●子块可以位于PL/SQL中的任何部分;●子块也即PL/SQL中的一条命令;§2.3 标识符PL/SQL程序设计中的标识符定义与SQL 的标识符定义的要求相同。
要求和限制有:●标识符名不能超过30字符;●第一个字符必须为字母;●不分大小写;●不能用’-‘(减号);●不能是SQL保留字。
提示: 一般不要把变量名声明与表中字段名完全一样,如果这样可能得到不正确的结果.例如:下面的例子将会删除所有的纪录,而不是KING 的记录;DECLAREEname varchar2(20) :=’KING’;BEGINDELETE FROM emp WHERE ename=ename;END;变量命名在PL/SQL中有特别的讲究,建议在系统的设计阶段就要求所有编程人员共同遵守一定的要求,使得整个系统的文档在规范上达到要求。
下面是建议的命名方法:§2.4 PL/SQL 变量类型在前面的介绍中,有系统的数据类型,也可以自定义数据类型。
下表是ORACLE类型和PL/SQL中的变量类型的合法使用列表:§2.4.1 变量类型例1.插入一条记录并显示;DECLARERow_id UROWID;info VARCHAR2(40);BEGININSERT INTO dept VALUES (90, ‘SERVICE’, ‘BEIJING’)RETURNING rowid, dname||’:’||to_char(deptno)||’:’||locINTO row_id, info;DBMS_OUTPUT.PUT_LINE(‘ROWID:’||row_id);DBMS_OUTPUT.PUT_LINE(info);END;其中:RETURNING子句用于检索INSERT语句中所影响的数据行数,当INSERT语句使用VALUES 子句插入数据时,RETURNING 字句还可将列表达式、ROWID和REF值返回到输出变量中。