一、概述

  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轻量版(一)——入门介绍的更多相关文章

  1. oracle从入门到精通复习笔记续集之PL/SQL(轻量版)

    复习内容: PL/SQL的基本语法.记录类型.流程控制.游标的使用. 异常处理机制.存储函数/存储过程.触发器. 为方便大家跟着我的笔记练习,为此提供数据库表文件给大家下载:点我下载 为了要有输出的结 ...

  2. PL/SQL轻量版(四)——存储函数/存储过程与触发器

    概述 ORACLE 提供可以把 PL/SQL 程序存储在数据库中,并可以在任何地方来运行它.这样就叫存储过程或函数.过程和函数统称为 PL/SQL 子程序,他们是被命名的 PL/SQL 块,均存储在数 ...

  3. PL/SQL轻量版(三)——游标与异常处理

    一.游标 1.概念 游标是一个 指向上下文的句柄( handle) 或指针.通过游标,PL/SQL 可以控制上下文区和处理语句时上下文区会发生些什么事情. 2.游标处理 处理显式游标 主要包含以下四个 ...

  4. PL/SQL轻量版(二)——基本语法

    一.流程控制 1.条件判断 语法: IF <布尔表达式> THEN PL/SQL 和 SQL语句 END IF; IF <布尔表达式> THEN PL/SQL 和 SQL语句 ...

  5. 基于Node和Electron开发了轻量版API接口请求调试工具——Post-Tool

    Electron 是一个使用 JavaScript.HTML 和 CSS 构建桌面应用程序的框架. 嵌入 Chromium 和 Node.js 到 二进制的 Electron 允许您保持一个 Java ...

  6. [PL/SQL工具]绿色版PLSQL工具登录时提示初始化失败,无法锁定OCI.dll错误

    问题现象:使用绿色版PL/SQL工具进行登录时报如下截图错误: 问题描述:初始化失败,无法锁定oci.dll 解决方法:在PLSQL的菜单栏里依次选择 工具->首选项,在OCI库(自动检测为空) ...

  7. pl/sql基础知识—过程快速入门

    n  过程 过程用于执行特定的操作,当建立过程时,既可以指定输入参数(in),也可以指定输出参数(out),通过在过程中使用输入参数,可以将数据传递到执行部分:通过使用输出参数可以将执行部分的数据传递 ...

  8. MySQL轻量版使用,无需安装,无脑操作

    不知道是否有想我一样的,开始用的都是安装版的,特别费事,卸载后注册表很难删除 下面介绍一下MySQL轻量级的如下 首先打开一个网址:www.oracle.com没错就是强大的Oracle官网 也可以直 ...

  9. SpringBootSecurity学习(01)网页版登录入门介绍

    Web应用安全管理 Web应用的安全管理,主要包括两个方面的内容,一个是用户身份的认证,即用户登录的设计,二是用户授权,即一个用户在一个应用系统中能够执行哪些操作的权限管理.权限管理的设计一般使用角色 ...

随机推荐

  1. 以太网的 MAC 层

    一.MAC 层的硬件地址 在局域网中,主机的硬件地址又称为物理地址,或 MAC 地址.6个字节. IEEE 的注册管理机构 RA 负责向厂家分配地址字段的前三个字节(即高位 24 位,组织唯一标识符O ...

  2. PHP修改图片

    这篇是关于修改图片的效果,主要还是用到php中的GD库中的函数,没想到php还有这凶残能力,出乎我的预料. 先看代码upload_image.php,主要是一个上传控件,用来选择图片 <html ...

  3. OC基础数据类型-NSValue

    1.NSValue:将指针等复杂的类型存储为对象 struct sct { int a; int b; }sctt; NSValue * value = [[NSValue alloc] initWi ...

  4. 4.12 Spark环境更新

    addJar方法是做什么的呢?它用于将Jar文件添加到Driver的RPC环境中. 通过addJar和addFile可以将各种任务执行所依赖的文件添加到Driver的RPC环境中, •小结 伴生对象是 ...

  5. HTML data-* 自定义属性

    HTML data-* 自定义属性 data-*是HTML5新添加的全局属性,通过它我们可以自定义属性,就像id,class等属性一样.我们可以使用JavaScript来操作这些属性. <div ...

  6. jenkins持续集成工作原理

    转载https://www.cnblogs.com/liyuanhong/p/6548925.html 片段 这里是选择Gitlab作为git server.Gitlab的功能和Github差不多,但 ...

  7. 项目所有的证书文件路径iOS

    ~/Library/MobileDevice/Provisioning Profiles

  8. 大数据学习之HDFS的工作机制07

    1:namenode+secondaryNameNode工作机制 2:datanode工作机制 3:HDFS中的通信(代理对象RPC) 下面用代码来实现基本的原理 1:服务端代码 package it ...

  9. JavaScript前端将时间戳转换为日期格式

    function (data) { var date = new Date(data) var Y = date.getFullYear() + '-' var M = (date.getMonth( ...

  10. Linux文本处理

    作为一名 Linux 研发人员,几乎每天都要面对文本处理场景. 因此 掌握文本处理套路 并 熟练运用文本处理命令 ,对于 提升工作效率 意义重大. 本文以一个实战例子抛砖引玉,介绍如何运用 grep ...