PL/SQL是啥?

开发 开发工具
从PL/SQL的字面上来看,它和SQL有一定的关系,那么就从SQL开始讲一下它们俩兄弟之间的关系。

从PL/SQL的字面上来看,它和SQL有一定的关系,那么就从SQL开始讲一下它们俩兄弟之间的关系。

编程语言

什么是SQL?

结构化查询语言(Structured Query Language,简称SQL)是用来访问关系型数据库一种通用语言,属于第四代语言(4GL),其执行特点是非过程化,即不用指明执行的具体方法和途径,而是简单地调用相应语句来直接取得结果即可。显然,这种不关注任何实现细节的语言对于开发者来说有着极大的便利。

那什么又是PL/SQL呢?

对于有些复杂的业务流程要求相应的程序来描述,这种情况下SQL就有些无能为力了。PL/SQL的出现正是为了解决这一问题,PL/SQL是一种过程化语言,属于第三代语言,它与C、 C++、Java等语言一样关注于处理细节,可以用来实现比较复杂的业务逻辑。

PL/SQL(Procedural Language/SQL)是数据库厂商在标准的SQL语言上的扩展。PL/SQL不仅允许嵌入SQL语言,还可以定义变量和常量,允许使用条件语句和循环语句,允许使用例外处理各种错误,这使得它的功能变得更加强大。

我们需要知道的

我们需要了解以下几个关键点:

  1. 存储过程,函数,触发器是PL/SQL编写的
  2. 存储过程,函数,触发器是存储在数据库中的
  3. PL/SQL是非常强大的数据库过程语言
  4. 存储过程,函数可以在C、 C++、Java、C#等程序中调用

PL/SQL开发工具有哪些?

首先,数据库厂商都会自带命令行开发工具,比如Oracle的SQL*PLUS、MySQL的MySQL Client、DB2的DB2CMD等等。

其次,会有一些集成开发环境(IDE),比较知名的有PL/SQL Developer(这个只适用Oracle数据库)、DbVisualizer、Navicat、SQLyog、Toad等等,这些IDE都是独立的第三方产品。其实,各数据库厂商也有自己的IDE,不过感觉没有特别好用的,基本上被第三方软件垄断,毕竟IDE不是数据库公司的强项嘛。

我们上面说的命令行工具以及集成开发环境都可以用来编写SQL或者PL/SQL程序,都属于PL/SQL的开发工具。

PL/SQL的程序结构

我们来大概浏览一下PL/SQL的程序结构,各数据库厂商的实现,会有所不同,下面以Oracle为例进行说明。

PL/SQL程序都是以块(block)为基本单位,整个PL/SQL块分三部分:声明部分(用declare开头)、执行部分(以 begin开头)和异常处理部分(以exception开头)。其中执行部分是必须的,其他两个部分可选。无论PL/SQL程序段的代码量有多大,其基本结构就是由这三部分组成。

程序结构模板

  1. declare 
  2.   /* 声明区(可选):定义类型和变量、声明变量、声明函数、游标 */ 
  3.   begin 
  4.   /* 执行区(必须的):执行pl/sql语句或者sql语句 */ 
  5.   exception 
  6.   /* 异常处理区(可选):处理错误的 */ 
  7.   end; 

一个demo

  1. /*声明部分,以declare开头*/ 
  2. declare v_id integer; 
  3. v_name varchar(20); 
  4. cursor c_emp is select * from employee where emp_id=3
  5. /*执行部分,以begin开头*/ 
  6. begin  open c_emp; //打开游标 
  7. loop 
  8. //从游标取数据 
  9. fetch c_emp into v_id,v_name;    
  10. exit when c_emp%notfound ; 
  11. end loop ; 
  12. //关闭游标 
  13. close c_emp;     
  14. dbms_output.put_line(v_name); 
  15. /*异常处理部分,以exception开始*/ 
  16. exception 
  17. when no_data_found then 
  18. dbms_output.put_line('没有数据'); 
  19. end ; 

【本文为51CTO专栏作者“朱国立”的原创稿件,转载请通过作者微信公众号“开发者圆桌”获取联系和授权】

戳这里,看该作者更多好文

责任编辑:赵宁宁 来源: 51CTO专栏
相关推荐

2009-07-24 10:29:29

PL SQL编程规范

2010-04-13 14:35:17

2010-04-12 08:59:00

2009-06-02 10:42:31

PLSQL动态SQL

2021-07-26 10:28:13

MySQL事务隔离

2021-10-14 21:16:47

WebSocketCTO连接

2020-06-02 07:44:04

AQS JavaNode

2021-08-04 13:19:42

MySQL 事务隔离

2009-12-29 08:58:32

Oracle SQL PL SQL单元测试

2010-05-05 11:17:55

Oracle数据库

2009-03-26 10:46:58

OraclePL、SQL存储过程

2010-04-22 16:58:21

Oracle PLSQL

2010-04-27 15:22:34

Oracle proc

2010-10-25 15:56:02

Oracle PLSQL过程调试

2010-04-08 16:55:12

Oracle proc

2009-03-09 16:39:19

PL SQLOracle过程调试

2021-12-17 17:50:50

RTORPO场景

2011-08-16 16:59:58

PLSQL分页存储过程Java

2022-02-17 15:46:08

数字人民币区块链

2017-05-03 16:16:21

DevOpsLinuxKitMoby
点赞
收藏

51CTO技术栈公众号