Oracle PL/SQL入门

为了解决纯SQL语句的缺陷问题,采取了PL/SQL(Procedure Language/Structured Query Language)的方式进行解决。

纯SQL语句的缺陷有如下几点:

1、不能模块编程;

2、执行速度慢;

3、安全性有问题;

4、浪费带宽。

pl/sql(procedural language/sql)是oracle在标准的sql语言上的扩展。pl/sql不仅允许嵌入sql语言,还可以定义变量和常量,允许使用条件语句和循环语句,允许使用例外处理各种错误,这样使得它的功能变得更加强大。

基本介绍

开发人员使用pl/sql编写应用模块时,不仅需要掌握sql语句的编写方法,还要掌握pl/sql语句及语法规则。pl/sql编程可以使用变量和逻辑控制语句,从而可以编写非常有用的功能模块。

比如:分页存储过程模块、订单管理存储过程模块、转账存储过程模块。而且如果使用pl/sql编程,可以轻松的完成非常复杂的查询要求。

pl/sql简单分类

块(编程)包含:

过程(存储过程)、函数、触发器、包

编写规范

1、注释

单行注释:--

多行注释:/*...*/来划分

2、标识符号的命名规范

1)当定义变量时,建议用v_作为前缀;如:v_sal

2)当定义常量时,建议用c_作为前缀;如:c_rate

3)当定义游标时,建议用_cursor作为后缀;如:emp_cursor

4)当定义例外时,建议用e_作为前缀;如:e_error

块介绍

块(block)是pl/sql的基本程序单元,编写pl/sql程序实际上就是编写pl/sql块。要完成相对简单的应用功能,可以只需要编写一个pl/sql块;但是如果要想实现复杂的功能,可能需要在一个pl/sql块中嵌套其它的pl/sql块。

块结构组成:

pl/sql块由三个部分构成:定义部分、执行部分、例外处理部分。

如下所示:

declare

/*定义部分----定义常量、变量、游标、例外、复杂数据类型*/

begin

/*执行部分----要执行的pl/sql语句和sql语句*/

exception

/*例外处理部分----处理运行的各种错误*/

end;

重要说明:

1、定义部分是从declare开始的,该部分是可选的;

2、执行部分是从begin开始的,该部分是必需的;

3、例外处理部分是从exception开始的,该部分是可选的。

--开发一个只包括执行部分的块
--set serveroutput on; 设置控制台输出打开
begindbms_output.put_line('Hello world');
end;
/

特别说明:在默认情况下,dbms_output.put_line是不输出内容的,需要set serveroutput on;才可输出。

--根据员工编号显示员工名字
--定义变量的格式是:名称 类型
--块形式
--&表示要接收从控制台输入的变量
--||表示把两个串拼接起来
declarev_ename varchar2(30);
beginselect ename into v_ename from emp where empno=&empno;dbms_output.put_line('员工名是:' || v_ename);
end;
/
--根据员工编号显示员工名字加上异常处理
--定义变量的格式是:名称 类型
--块形式
declarev_ename varchar2(30);
beginselect ename into v_ename from emp where empno=&empno;dbms_output.put_line('员工名是:' || v_ename);
exceptionwhen no_data_found thendbms_output.put_line('输入错误');
end;
/

为了避免pl/sql程序的运行错误,提高pl/sql的健壮性,应该对可能的错误进行处理。

异常的基本语法:

exception

when 异常的名称1 then

//对异常处理的代码

when 异常的名称2 then

//对异常处理的代码

end;

异常处理的作用:

1、可以捕获异常,可以给出明确提示;

2、有时可以利用异常来进行业务处理。

----------参考《韩顺平玩转Oracle》

Oracle PL/SQL入门相关推荐

  1. Oracle PL/SQL入门之慨述

    一.PL/SQL出现的目的 结构化查询语言(Structured Query Language,简称SQL)是用来访问关系型数据库一种通用语言,它属于第四代语言(4GL),其执行特点是非过程化,即不用 ...

  2. oracle sql循环判断语句怎么写,Oracle 非常详细的 PL/SQL入门教程,PL/SQL语法格式/循环语句/条件判断/异常处理...

    PL/SQL入门教程目录 Oracle PL/SQL入门教程,PL/SQL语法格式/循环语句/条件判断/异常处理 一.PL/SQL简介 1.PL/SQL简介 1.PL/SQl是过程语言PL与结构化语言 ...

  3. Oracle PL/SQL 程序设计读书笔记 - 第14章 DML和事务管理

    Oracle PL/SQL 程序设计读书笔记 - 第14章 DML和事务管理 Oracle PL/SQL 程序设计读书笔记 - 第14章 DML和事务管理 ACID原则:即一个事务具有原子性.一致性. ...

  4. ORACLE PL/SQ入门

    一.块     1.块结构         1)块的三个部分         2)块语法     2.块的命名和匿名     3.块的执行 二.变量.常量与字符集     1.变量         1 ...

  5. Oracle PL/SQL实战

    <Oracle PL/SQL实战> 基本信息 作者: (英)比林顿(Billington,A·)等著,卢涛 [作译者介绍] 出版社:人民邮电出版社 ISBN:9787115294852 上 ...

  6. PL/SQL 入门学习(一)

    前言:本博客分为两篇,学完之后就可以在项目中使用存储过程进行开发. 在学校的时候虽说上过PL/SQL这门课,然并卵,只恨当时啊!工作关系,需要用到Oracle存储过程.我就简单看了一些教程,特此记录一 ...

  7. PL / SQL在线编译器–在线运行Oracle PL / SQL程序

    In this tutorial you will learn about pl/sql online compiler that will let you run pl/sql programs o ...

  8. PL/SQL入门,非常详细的笔记

    PL/SQL入门,非常详细的笔记 -- PL/SQL简介: 1.PL/SQl是过程语言PL与结构化语言SQL结合而成的编程语言 2.PL/SQL引擎驻留在Oracle服务器中 3.该引擎接收PL/SQ ...

  9. oracle pl/sql 程序设计 历史笔记整理

    20131016 周三 oracle pl/sql 程序设计 第2章 创建并运行pl/sql代码 sqlplus yjkhecc/yjkhecc@10.85.23.92:1521/orcl 在java ...

最新文章

  1. python制作桑基图_Python制作桑基图
  2. 博客园博客停止更新的通知,程序员生存定律会在CSDN发完
  3. .NET版开源日志框架Log4Net详解
  4. InfoPath2010表单-IE浏览器2个“微型内嵌工具”的使用和介绍
  5. Windows下配置Git
  6. 二叉树为空意味着二叉树_我是怎么调试出来二叉树的遍历(超精彩配图),从此遍历不再愁了...
  7. 7位应届生讲述就业难:面试20多家公司,甚至当了保安
  8. python invalid syntax string_Python报错,“SyntaxError: invalid syntax”
  9. mysql数据库逻辑备份与恢复_Mysqldump逻辑备份与恢复
  10. Linux入门基础命令教程
  11. 2022深圳杯/东三省数学建模ABCD题 赛题分析解题方案
  12. 隧道人员定位管理系统
  13. CSS过滤器(CSS filters)
  14. 发达国家如何布局大数据战略
  15. win10重置系统后右键一直转圈,解决鼠标右键一直转圈问题
  16. 双循环背景下的全球供应链机遇与挑战
  17. 我平常用计算机玩游戏英语,桌面游戏用英语怎么说
  18. MATLAB中nargin函数的用法nargin是用来判断输入变量个数的函数,这样就可以针对不同的情况执行不同的功能。通常可以用它来设定一些默认值。如下例所示: 函数文件 examp.m
  19. 类的练习:定义一个Tree(树)类,有成员ages(树龄),成员函数grow(int years)对ages加上years,age()显示tree对象的ages的值。
  20. setsockopt用法描述

热门文章

  1. C#设计模式学习笔记:(20)职责链模式
  2. js 请求接口获取不到登录cookie xhrFields 配置
  3. 十大经典排序算法动画演示
  4. git命令升级版用法
  5. django新建一个项目_如何使用Django创建项目
  6. 软件公司怎么定价它们的项目_如何为副项目定价
  7. Java 统计字母个数
  8. ubuntu16.04安装docker(阿里云镜像)
  9. C#:winform开发的System.AccessViolationException错误,已解决
  10. 面试问题:SpringMVC的执行流程