基于oracle数据库存储过程的创建及调用
教学大纲:
- PLSQL编程: Hello World、程序结构、变量、流程控制、游标
- 存储过程: 概念、无参存储、有参存储(输入、输出)
- JAVA调用存储过程
1、PLSQL编程
1.1、概念和目的
什么是PL/SQL
- PL/SQL(Procedure Language/SQL)
- PLSQL是Oracle对sql语言的过程化扩展(类似于Basic)
- 指在SQL命令语言中增加了过程处理语句(如分支、循环等),使SQL语言具有过程处理能力
1.2、程序结构
通过Plsql Developer工具的Test Window创建 程序模板或者通过语句在SQL Window编写
提示:PLSQL语言是不区分大小写的
PL/SQL可以分为三个部分: 声明部分、可执行部分、异常处理部分
-- Created on 2020/11/23 by HASSD
declare
-- 声明游标、变量
i integer;
begin
-- 执行语句
-- [异常处理]
end;
其中 declare部分用来声明变量或游标(结果集类型变量),如果程序中无变量声明则可以省略
1.3、Hello World
begin
-- 打印Hello World
dbms_output.put_line('Hello World');
end;
其中 dbms_output为oracle内置程序包,相当于Java中的Syste.out,而put_line()是调用其中的方法,相当于println().
1.4、变量
PLSQL编程中常见的变量分两大类:
- 普通数据类型(char,varchar2,date,number,boolean,long)
- 特殊变量类型(引用型变量,记录型变量)
变量的声明方式为:
-- 变量名 变量类型(变量长度)
v_name varchar2(20);
1.4.1、普通变量
为了验证本节,我们需要提前创建一个表
create table EMP
(
empno NUMBER not null,
ename VARCHAR2(20),
sal NUMBER
)
并在其中至少存入一条数据(我在里面存了一条empno为7839的数据,其它值可以自己编写,自己填入其它数据也可以,只需要在后续验证过程中修改对应数值即可)
变量赋值的方式有两种:
- 直接赋值语句: =
- 语句赋值: 使用select…into…赋值 (select 值 into 变量)
-- 打印人员个人信息,包括姓名,薪水,地址
declare
-- 姓名
v_name varchar2(20) := '小杨'; -- 声明变量时直接赋值
-- 薪水
v_sal number;
--地址
v_addr varchar2(200);
begin
-- 在程序中直接赋值
v_sal :=0;
-- 语句赋值
select '湖南工业大学' into v_addr from dual;
-- 打印输出 拼接(使用"||"拼接,效果与java语句中使用"+"拼接相同)
dbms_output.put_line('姓名:'||v_name||',薪水:' ||v_sal ||',地址:'|| v_addr );
end;
1.4.2、引用型变量
变量的类型和长度取决于表中字段的类型和长度
通过表名.列名%type指定变量的类型和长度,例如:v_name emp.ename%TYPE;
示例:查询emp表中7839号员工的个人信息,打印姓名和薪水
对比:
这是我们使用普通变量:
-- Created on 2020/11/23 by HASSD
-- 查询emp表中7839号员工的个人信息,打印姓名和薪水
declare
--姓名
v_name varchar2(20);
--薪水
v_sal number;
begin
select ename,sal into v_name,v_sal from emp where empno=7839;
--打印输出
dbms_output.put_line('姓名:'||v_name||',薪水:'||v_sal);
end;
使用引用型变量:
-- Created on 2020/11/23 by HASSD
-- 查询emp表中7839号员工的个人信息,打印姓名和薪水
declare
--姓名
v_name emp.ename%type