PL/SQL轻量版(一)——入门介绍
一、概述
1.概念对比:
SQL:
结构化查询语言(Structured Query Language)简称SQL(发音:/ˈes kjuː ˈel/ "S-Q-L"),是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;
差异原因:
各种不同的数据库对SQL语言的支持与标准存在着细微的不同,这是因为,有的产品的开发先于标准的公布,另外,各产品开发商为了达到特殊的性能或新的特性,需要对标准进行扩展。PL/SQL:
PL/SQL也是一种程序语言,叫做过程化SQL语言(Procedural Language/SQL)。PL/SQL是Oracle数据库对SQL语句的扩展。在普通SQL语句的使用上增加了编程语言的特点,所以PL/SQL就是把数据操作和查询语句组织在PL/SQL代码的过程性单元中,通过逻辑判断、循环等操作实现复杂的功能或者计算的程序语言。T_SQL:
T-SQL 即 Transact-SQL,是 SQL 在 Microsoft SQL Server 上的增强版,它是用来让应用程式与 SQL Server 沟通的主要语言。T-SQL 提供标准 SQL 的 DDL 和 DML 功能,加上延伸的函数、系统预存程序以及程式设计结构(例如 IF 和 WHILE)让程式设计更有弹性。PLSQL developer:
PL/SQL Developer是一个集成开发环境,专门面向Oracle数据库存储程序单元的开发。
2.PL/SQL简介
是Oracle对标准数据库语言SQL的过程化扩充,它将数据库技术和过程化程序设计语言联系起来(通俗的说,SQL与编程语言的混血儿),是一种应用开发语言,可使用循环,分支处理数据,将SQL的数据操纵功能与过程化语言数据处理功能结合起来.PL/SQL的使用,使SQL成为一种高级程序设计语言,支持高级语言的块操作,条件判断,循环语句,嵌套等,与数据库核心的数据类型集成,使SQL 的程序设计效率更高.
⒈1 PL/SQL的作用
使用PL/SQL可以编写具有很多高级功能的程序,虽然通过多个SQL语句可能也能实现同样的功能,但是相比而言,PL/SQL具有更为明显的一些优点:
⒈能够使一组SQL语句的功能更具模块化程序特点;
⒉采用了过程性语言控制程序的结构;
⒊可以对程序中的错误进行自动处理,使程序能够在遇到错误的时候不会被中断;
⒋具有较好的可移植性,可以移植到另一个Oracle数据库中;
⒌集成在数据库中,调用更快;
⒍减少了网络的交互,有助于提高程序性能。
通过多条SQL语句实现功能时,每条语句都需要在客户端和服务端传递,而且每条语句的执行结果也需要在网络中进行交互,占用了大量的网络带宽,消耗了大量网络传递的时间,而在网络中传输的那些结果,往往都是中间结果,而不是我们所关心的。
而使用PL/SQL程序是因为程序代码存储在数据库中,程序的分析和执行完全在数据库内部进行,用户所需要做的就是在客户端发出调用PL/SQL的执行命令,数据库接收到执行命令后,在数据库内部完成整个PL/SQL程序的执行,并将最终的执行结果反馈给用户。在整个过程中网络里只传输了很少的数据,减少了网络传输占用的时间,所以整体程序的执行性能会有明显的提高。
二、PL/SQL基本语法
1.PL/SQL中可以使用的SQL关键字:
INSERT,UPDATE,DELETE,SELECT … INTO,COMMIT,ROLLBACK,SAVEPOINT。
-----------------------------------------------------------------------
提示:在 PL/SQL 中只能用 SQL 语句中的 DML 部分,不能用 DDL 部分,如果要在 PL/SQL 中使用 DDL( 如
CREATE table 等 ) 的话,只能以动态的方式来使用。
2.PL/SQL块
PL/SQL 块的结构如下:
DECLARE
/* 声明部分 : 在此声明 PL/SQL 用到的变量 , 类型及游标,以及局部的存储过程和函数 */
BEGIN
/* 执行部分 : 过程及 SQL 语句 , 即程序的主要部分 */
EXCEPTION
/* 执行异常部分 : 错误处理 */
END;
// 执行部分必须存在
Hello World入门示例:
在plsql developer中,需要先设置一项,才能看到输出(注意没有分号):
SQL> set serveroutput on
SQL>
程序:
DECLARE
--声明变量
BEGIN
--程序真正执行部分(类似main方法)
dbms_output.put_line('Hello World');
--EXCEPTION
--异常处理部分(when...then),没有异常处理,则无需写出
END;
// 提示 : 一般不要把变量名声明与表中字段名完全一样 , 如果这样可能得到不正确的结果
结果:
Hello World PL/SQL procedure successfully completed
查询员工工资示例:变量定义等后续将会介绍
--查询id为100的员工的工资
DECLARE
--可以动态获取表字段的类型
V_sal employees.salary%type;
V_hdate DATE;
BEGIN
SELECT salary,hire_date INTO V_sal,V_hdate FROM employees WHERE employee_id = 100;
--注意使用||作为连接符
dbms_output.put_line(V_sal||','||V_hdate);
END;
3.变量命名建议

4.变量类型


更多完整数据类型介绍,参见:http://ajita.iteye.com/blog/1424143
运算符
重点运算符:
等于—— =
赋值—— :=
完整运算符:




5.记录类型
记录类型是把 逻辑相关 的数据作为一个单元存储起来 ,称作 PL/SQL RECORD 的域(FIELD) ,其作用是存放互不相同但逻辑相关的信息。
通俗的说,就是“类”的概念。
语法:
TYPE record_type IS RECORD(
Field1 type1 [NOT NULL] [:= exp1 ],
Field2 type2 [NOT NULL] [:= exp2 ],
. . . . . .
Fieldn typen [NOT NULL] [:= expn ] ) ;
示例:注意RECORD的写法(别写成RECODE了/笑哭)
DECLARE
--声明记录类型
TYPE emp_record IS RECORD(
V_sal NUMBER(10),
V_hdate employees.hire_date%type);
--声明记录类型对象
V_emp_recode emp_record;
BEGIN
SELECT salary,hire_date INTO V_emp_recode FROM employees WHERE employee_id = 100;
--注意使用||作为连接符
dbms_output.put_line(V_emp_recode.V_sal||','||V_emp_recode.V_hdate);
END;
6.使用%使用对应类型
使用%TYPE
定义一个变量,其数据类型与已经定义的某个 数据变量的类型相同,或者与数据库表的某个列的数据类型相同,这时可以使用%TYPE。
示例:
DECLARE
--声明记录类型
TYPE emp_record IS RECORD(
V_sal NUMBER(10),
V_hdate employees.hire_date%type);
使用%ROWTYPE
PL/SQL 提供%ROWTYPE 操作符, 返回一个记录类型, 其数据类型和数据库表的数据结构相一致
示例:

7.PL/SQL嵌套表
语法:
TYPE type_name IS TABLE OF
{datatype | {variable | table.column} % type | table%rowtype};
更多嵌套表介绍与实例,参考:http://blog.csdn.net/shangboerds/article/details/42386647
8.注释
支持两种注释:
--这是单行注释
/*
*这是多行注释
*/
PL/SQL轻量版(一)——入门介绍的更多相关文章
- oracle从入门到精通复习笔记续集之PL/SQL(轻量版)
复习内容: PL/SQL的基本语法.记录类型.流程控制.游标的使用. 异常处理机制.存储函数/存储过程.触发器. 为方便大家跟着我的笔记练习,为此提供数据库表文件给大家下载:点我下载 为了要有输出的结 ...
- PL/SQL轻量版(四)——存储函数/存储过程与触发器
概述 ORACLE 提供可以把 PL/SQL 程序存储在数据库中,并可以在任何地方来运行它.这样就叫存储过程或函数.过程和函数统称为 PL/SQL 子程序,他们是被命名的 PL/SQL 块,均存储在数 ...
- PL/SQL轻量版(三)——游标与异常处理
一.游标 1.概念 游标是一个 指向上下文的句柄( handle) 或指针.通过游标,PL/SQL 可以控制上下文区和处理语句时上下文区会发生些什么事情. 2.游标处理 处理显式游标 主要包含以下四个 ...
- PL/SQL轻量版(二)——基本语法
一.流程控制 1.条件判断 语法: IF <布尔表达式> THEN PL/SQL 和 SQL语句 END IF; IF <布尔表达式> THEN PL/SQL 和 SQL语句 ...
- 基于Node和Electron开发了轻量版API接口请求调试工具——Post-Tool
Electron 是一个使用 JavaScript.HTML 和 CSS 构建桌面应用程序的框架. 嵌入 Chromium 和 Node.js 到 二进制的 Electron 允许您保持一个 Java ...
- [PL/SQL工具]绿色版PLSQL工具登录时提示初始化失败,无法锁定OCI.dll错误
问题现象:使用绿色版PL/SQL工具进行登录时报如下截图错误: 问题描述:初始化失败,无法锁定oci.dll 解决方法:在PLSQL的菜单栏里依次选择 工具->首选项,在OCI库(自动检测为空) ...
- pl/sql基础知识—过程快速入门
n 过程 过程用于执行特定的操作,当建立过程时,既可以指定输入参数(in),也可以指定输出参数(out),通过在过程中使用输入参数,可以将数据传递到执行部分:通过使用输出参数可以将执行部分的数据传递 ...
- MySQL轻量版使用,无需安装,无脑操作
不知道是否有想我一样的,开始用的都是安装版的,特别费事,卸载后注册表很难删除 下面介绍一下MySQL轻量级的如下 首先打开一个网址:www.oracle.com没错就是强大的Oracle官网 也可以直 ...
- SpringBootSecurity学习(01)网页版登录入门介绍
Web应用安全管理 Web应用的安全管理,主要包括两个方面的内容,一个是用户身份的认证,即用户登录的设计,二是用户授权,即一个用户在一个应用系统中能够执行哪些操作的权限管理.权限管理的设计一般使用角色 ...
随机推荐
- 以太网的 MAC 层
一.MAC 层的硬件地址 在局域网中,主机的硬件地址又称为物理地址,或 MAC 地址.6个字节. IEEE 的注册管理机构 RA 负责向厂家分配地址字段的前三个字节(即高位 24 位,组织唯一标识符O ...
- PHP修改图片
这篇是关于修改图片的效果,主要还是用到php中的GD库中的函数,没想到php还有这凶残能力,出乎我的预料. 先看代码upload_image.php,主要是一个上传控件,用来选择图片 <html ...
- OC基础数据类型-NSValue
1.NSValue:将指针等复杂的类型存储为对象 struct sct { int a; int b; }sctt; NSValue * value = [[NSValue alloc] initWi ...
- 4.12 Spark环境更新
addJar方法是做什么的呢?它用于将Jar文件添加到Driver的RPC环境中. 通过addJar和addFile可以将各种任务执行所依赖的文件添加到Driver的RPC环境中, •小结 伴生对象是 ...
- HTML data-* 自定义属性
HTML data-* 自定义属性 data-*是HTML5新添加的全局属性,通过它我们可以自定义属性,就像id,class等属性一样.我们可以使用JavaScript来操作这些属性. <div ...
- jenkins持续集成工作原理
转载https://www.cnblogs.com/liyuanhong/p/6548925.html 片段 这里是选择Gitlab作为git server.Gitlab的功能和Github差不多,但 ...
- 项目所有的证书文件路径iOS
~/Library/MobileDevice/Provisioning Profiles
- 大数据学习之HDFS的工作机制07
1:namenode+secondaryNameNode工作机制 2:datanode工作机制 3:HDFS中的通信(代理对象RPC) 下面用代码来实现基本的原理 1:服务端代码 package it ...
- JavaScript前端将时间戳转换为日期格式
function (data) { var date = new Date(data) var Y = date.getFullYear() + '-' var M = (date.getMonth( ...
- Linux文本处理
作为一名 Linux 研发人员,几乎每天都要面对文本处理场景. 因此 掌握文本处理套路 并 熟练运用文本处理命令 ,对于 提升工作效率 意义重大. 本文以一个实战例子抛砖引玉,介绍如何运用 grep ...