《oracle plsql 编程 存储过程.docx》由会员分享,可在线阅读,更多相关《oracle plsql 编程 存储过程.docx(5页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、oracle pl/sql 编程 存储过程pl/sql 的介绍 pl/sql 是什么 pl/sql(procedural language/sql)是 oracle 在标准的sql 语言上的扩展。 pl/sql 不仅允许嵌入 sql 语言,还可以定义变量和常量,允许使用条件语句和 循环语句,允许使用例外处理各种错误,这样使得它的功能变得更加大。 为什么学 pl/sql 学习必要性 1.提高应用程序的运行性能 2.模块化的设计思想 【分页的过程,订单的过程,转账的过程。】 3.减少网络传输量 4.提高安全性 (sql 会包括表名,有时还可能有密码,传输的时候会泄露。PL/SQL 就不会) 为什么
2、 PL/SQL 会快呢?不好的地方: 移植性不好 (换数据库就用不了), 用什么编写 pl/sql sqlplus 开发工具 sqlplus 是 oracle公司提供的一个工具,这个因为我们在以前介绍过的: 举一个简单的案例: 编写一个存储过程,该过程可以向某表中添加记录。 1.创建一个简单的表 Sql 代码 1. create table mytest(name varchar2(30),passwd varchar2(30); - Page 66- 2.创建过程 Sql 代码 1. create or replace procedure sp_pro1 is 2. begin-执行部分 3
3、. insert into mytest values(韩顺平,m1234); 4. end; 5. / replace:表示如果 有sp_pro1,就替换 如何查看错误信息:show error; 如何调用该过程: 1)exec 过程名 (参数值 1,参数值 2.); 2)call 过程名 (参数值 1,参数值 2.); pl/sql developer开发工具 pl/sql developer 是用于开发 pl/sql 块的集成开发环境(ide),它是一个独立 的产品,而不是oracle 的一个附带品。 举一个简单案例: 编写一个存储过程,该过程可以删除某表记录。 Sql 代码 1. cr
4、eate or replace procedure sp_pro2 is 2. begin-执行部分 3. delete from mytest where name=韩顺平; 4. end; pl/sql 基础 pl/sql 介绍 介绍 开发人员使用pl/sql 编写应用模块时,不仅需要掌握 sql 语句的编写方法, 还要掌握 pl/sql 语句及语法规则。pl/sql 编程可以使用变量和逻辑控制语句, 从而可以编写非常有用的功能模块。比如:分页存储过程模块、订单处理存储过 程模块、转账存储过程模块。而且如果使用pl/sql 编程,我们可以轻松地完成 非常复杂的查询要求。 pl/sql 可以
5、做什么 简单分类 |过程 (存储过程) | |函数 - Page 67-块 (编程) | |触发器 | |包 编写规范 编写规范 1.注释 单行注释 - Sql 代码 1. select * from emp where empno=7788; -取得员工信息 多行注释 /*.*/来划分 2.标志符号的命名规范 1).当定义变量时,建议用 v_作为前缀 v_sal 2).当定义常量时,建议用 c_作为前缀 c_rate 3).当定义游标时,建议用_cursor 作为后缀 emp_cursor 4).当定义例外时,建议用 e_作为前缀 e_error pl/sql 块介绍 介绍 块 (block
6、)是 pl/sql 的基本程序单元,编写 pl/sql 程序实际上就是编写 pl/sql 块,要完成相对简单的应用功能,可能只需要编写一个pl/sql 块,但是 如果想要实现复杂的功能,可能需要在一个pl/sql 块中嵌套其它的 pl/sql块。 pl/sql 块 由三个部分构成:定义部分,执行部分,例外处理部分。 如下所示: declare /*定义部分定义常量、变量、游标、例外、复杂数据类型*/ begin /*执行部分要执行的pl/sql 语句和 sql 语句*/ exception /*例外处理部分处理运行的各种错误*/ end; 定义部分是从 declare 开始的,该部分是可选的;
7、 执行部分是从 begin 开始的,该部分是必须的; 例外处理部分是从 exception 开始的,该部分是可选的。 可以和 java 编程结构做一个简单的比较。 pl/sql 块的实例(1) 实例 1-只包括执行部分的pl/sql 块 - Page 68-Sql 代码 1. set serveroutput on -打开输出选项 2. begin 3. dbms_output.put_line(hello); 4. end; 相关说明: dbms_output 是 oracle所提供的包 (类似 java 的开发包),该包包含一些过程, put_line 就是 dbms_output包的一个
8、过程。 pl/sql 块的实例(2) 实例 2-包含定义部分和执行部分的pl/sql 块 Sql 代码 1. declare 2. v_ename varchar2(5); -定义字符串变量 3. begin 4. select ename into v_ename from emp where empno=&aa; 5. dbms_output.put_line(雇员名:|v_ename); 6. end; 7. / 如果要把薪 也显示出来,那么执行部分就应该这么写: Sql 代码 1. select ename,sal into v_ename,v_sal from emp where e
9、mpno=&aa; 相关说明: & 表示要接收从控制台输入的变量 pl/sql 块的实例(3) 实例 3-包含定义部分,执行部分和例外处理部分 为了避免 pl/sql 程序的运行错误,提高pl/sql 的健壮性,应该对可能的错误 进行处理,这个很有必要。 1.比如在实例 2 中,如果输入了不存在的雇员号,应当做例外处理。 2.有时出现异常,希望用另外的逻辑处理,网示 我们看看如何完成 1 的要求。 相关说明: oracle事先预定义了一些例外,no_data_found 就是找不到数据的例外。 Sql 代码 - Page 69-1. declare 2. -定义变量 3. v_ename va
10、rchar2(5); 4. v_sal number(7,2); 5. begin 6. -执行部分 7. select ename,sal into v_ename,v_sal from emp where empno=&a a; 8. -在控制台显示用户名 9. dbms_output.put_line(用户名是:|v_ename| 工资:|v_sal); 10. -异常处理 11.exception 12.when no_data_found then 13. dbms_output.put_line(朋友,你的编号输入 误 !); 14.end; 15./ - Page 70-17.p
11、l/sql 分类分类 - 过程过程,函数,函数,包,包,触发器触发器 分类分类 过程过程,函数函数,包包,触发器触发器 过程 过程用于执行特定的操作,当建立过程时,既可以指定输入参数(in),也可以指 定输出参数(out), 通过在过程中使用输入参数,可以将数据传递到执行部分; 通过使用输出参数,可以将执行部分的数据传递到应用环境。在 sqlplus 中可以 使用 create procedure 命令来建立过程。 实例如下: 1.请考虑编写一个过程,可以输入雇员名,新工资,可修改雇员的工资 2.如何调用过程有两种方法; exec call 3.如何在 java程序中调用一个存储过程 问题:如何使用过程返回值? 特别说明: 对于过程我们会在以后给大家详细具体的介绍,现在请大家先有一个概念。 create procedure sp_pro3(spName varchar2, newSal number) is -不要写成number(3,2),表明类型就可以了,不需要大小。就好像 Java 写方法 时的参数一样 Sql 代码 1. begin 2. -执行部分,根据用户名去修改工资 3. update emp set sal=newSal where ename=spName; 4. end; 5. /