Oracle PL/SQL入门
2015-11-26 17:01
447 查看
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_sal2)当定义常量时,建议用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; 设置控制台输出打开 begin dbms_output.put_line('Hello world'); end; /
特别说明:在默认情况下,dbms_output.put_line是不输出内容的,需要set serveroutput on;才可输出。
--根据员工编号显示员工名字 --定义变量的格式是:名称 类型 --块形式 --&表示要接收从控制台输入的变量 --||表示把两个串拼接起来 declare v_ename varchar2(30); begin select ename into v_ename from emp where empno=&empno; dbms_output.put_line('员工名是:' || v_ename); end; /
--根据员工编号显示员工名字加上异常处理 --定义变量的格式是:名称 类型 --块形式 declare v_ename varchar2(30); begin select ename into v_ename from emp where empno=&empno; dbms_output.put_line('员工名是:' || v_ename); exception when no_data_found then dbms_output.put_line('输入错误'); end; /
为了避免pl/sql程序的运行错误,提高pl/sql的健壮性,应该对可能的错误进行处理。
异常的基本语法:
exceptionwhen 异常的名称1 then
//对异常处理的代码
when 异常的名称2 then
//对异常处理的代码
end;
异常处理的作用:
1、可以捕获异常,可以给出明确提示;2、有时可以利用异常来进行业务处理。
----------参考《韩顺平玩转Oracle》
相关文章推荐
- 10G ORACLE RAC 搭建实战之Clusterware安装、数据库创建
- Oracle的自增序列、触发器、序列
- 10G ORACLE RAC 搭建实战之环境配置
- oracle之FUNCTION拙见
- 10G ORACLE RAC 搭建实战之LINUX LVM划分
- Oracle存储过程
- oracle rman全备恢复实践
- Oracle Cursor游标的使用
- oracle 存储过程详细介绍(创建,删除存储过程,参数传递等)1
- 四年前的老文章【Oracle, the Open Source Killer.】
- Oracle中Function学习2
- Oracle Dataguard部署
- oracle 一行拆分多行
- Oracle 10g console控制台报错: java.lang.Exception: Exception in sending Request :: null
- java连接Oracle数据库详细代码,jdbc
- oracle function学习1
- 【ojdbc14.jar】由于Oracle驱动ojdbc14.jar导致千万富翁破产之始末
- ORACLE11g:No Dialect mapping for JDBC type: -9,2011解决方案
- SQL SERVER导入数据到ORACLE的方法总结
- mysql和oracle的区别(功能性能、选择、使用它们时的sql等对比)