oracle PL/SQL高级编程

PL/SQL高级编程

实验目的:
一、掌握PL/SQL的数据结构和编程结构,掌握应用PL/SQL编写简单程序的方法
二、理解存储过程的概念,掌握编写存储过程的方法
三、理解函数的概念,掌握编写存储过程的方法
实验内容:
1、PL/SQL编程基础
一、pl/sql的组成:声明块、执行块、异常处理块
二、编制代码实现1+2+...+100的计算
declare
n int;
result int;
begin
n:=0;
result:=0;
while n<=100 loop
result:=result+n;
n:=n+1;
end loop;
dbms_output.put_line('结果是'||result);
end;

2、存储过程编程
一、存储过程的概念
procedure 存储过程,存储在数据库中的不带返回值的命名PL/sql程序块,(能够反复使用复杂操做,并提升执行效率)

二、存储过程的语法
create or replace procedure procedureName(parm parmType)
as
local varible defination
begin
procedure body;
end;

三、编写求u1+2+...+100的结果并显示的存储过程
create or replace procedure sp_calcSum
as
begin
...
end;

四、编写求1+2+...+n的带参数的存储过程
create or replace procedure sp_calcSum(pEndNumber int)
as
begin
...
end;

3、函数编程
一、函数的概念
function函数,存储在数据库中的带返回值的命名pl/sql程序块

二、函数的语法
create or replace function functionName(parm parmType) return resultType
as
local varible defination
begin
function body
return result;
end;

三、编写求1+2+...+100的函数
create or replace function f_calcSum() return int
as
begin
...
return result;
end;

四、编写求1+2+...+n的函数
create or replace function f_calcSum(pEndNumber int) return int
as
begin
....
return result;
end;



4、存储过程与函数的应用
一、编写将指定部门号的全部员工薪水增长指定值的存储过程,并调用此存储过程将30号部门的薪水增长1000
编写存储过程 sp_AlterSalByDeptno(pSalDelta,pDeptno)
调用存储过程将30号部门的薪水增长1000元 execute sp_AlterSalByDeptno(1000,30)
与使用update语句进行对比
sql

 

二、编写求指定部门号的全部员工平均薪水的函数,并调用此函数计算30号部门的平均薪水
编写函数 f_GetAvgSalByDeptno(pDeptno)
调用函数求出30号部门的平均薪水并显示tempSal:=f_GetAvgSalByDeptno(30)
与使用select语句进行对比数据库


三、结论
须要频繁重复的数据库操做一般会编制专门的存储过程或函数
存储过程应用: 先建立存储过程(编写sql语句,将编写的代码编译后保存在数据库中,同时存储了编写的plsql语句和对应的编译后的机器操做指令),再使用存储过程(直接调用机器操做指令)
sql语句:update emp set sal=sal+1000 where deptno=30;先检查sql是否正确,再转换成机器操做指令,最后执行机器操做

对比:
while deptno in(10,20,30) loop
execute alterSalBydeptno(delta,target); ---1  每次只需直接执行
update emp set sal=sal+delta where deptno=target;  ---2  每次执行都要检查、转换、执行
DeptnoMoveNext();
end loop

能够在此段代码执行先后分别获取当前时间,检查其两种方式所用时间的差异编程

相关文章
相关标签/搜索