PL/SQL高级编程
实验目的:
1、掌握PL/SQL的数据结构和编程结构,掌握应用PL/SQL编写简单程序的方法
2、理解存储过程的概念,掌握编写存储过程的方法
3、理解函数的概念,掌握编写存储过程的方法
实验内容:
一、PL/SQL编程基础
1、pl/sql的组成:声明块、执行块、异常处理块
2、编制代码实现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;


二、存储过程编程
1、存储过程的概念
procedure 存储过程,存储在数据库中的不带返回值的命名PL/sql程序块,(可以反复使用复杂操作,并提高执行效率)

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

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

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

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

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

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

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

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

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


3、结论
需要频繁重复的数据库操作通常会编制专门的存储过程或函数
存储过程应用: 先创建存储过程(编写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

可以在此段代码执行前后分别获取当前时间,检查其两种方式所用时间的差别

PL/SQL高级编程相关推荐

  1. oracle上浮下浮分析函数_Oracle SQL高级编程——分析函数(窗口函数)全面讲解...

    Oracle SQL高级编程--分析函数(窗口函数)全面讲解 概述 分析函数是以一定的方法在一个与当前行相关的结果子集中进行计算,也称为窗口函数. 一般结构为 Function(arg1 , arg2 ...

  2. PL/SQL_高级编程

    一.PL/SQL基础知识 图片 1.什么是PL/SQL PL/SQL(Procedural Language/SQL,过程语言/SQL)是结合了Oracle过程语言和结构化查询语言(SQL)的一种扩展 ...

  3. Oracle SQL高级编程——分析函数(窗口函数)全面讲解

    Oracle SQL高级编程--分析函数(窗口函数)全面讲解 注:本文来源于:<Oracle SQL高级编程--分析函数(窗口函数)全面讲解> 概述 分析函数是以一定的方法在一个与当前行相 ...

  4. linq to sql 行转列_SQL进阶:SQL高级编程语法实例

    之前写过的文章: canhui87:Oracle数据统计必会语法知识​zhuanlan.zhihu.com 主要是告诉大家学习SQL高级编程的参考路径,现在把书里简单的实例代码整理出来,方便以后随时查 ...

  5. PL/SQL ——分页编程

    通过PL/SQL编程,编写分页存储过程.代码如下所示: 1 --PL/SQL开发编写分页代码 2 --创建包 3 create or replace package Page as 4 type te ...

  6. Oracle PL/SQL进阶编程(第十五弹:动态SQL语句)

    理解动态SQL语句 动态SQL语句基础 动态SQL语句不仅是指SQL语句是动态拼接而成的,更主要的是SQL语句所使用的对象也是运行时期才创建的.出现这种功能跟PL/SQL本身的早起绑定特性有关,早PL ...

  7. oracle pl/sql编程详解,OraclePL/SQL高级编程详解

    –创建一个表,此表作为子表 create table fk_t as select *from user_objects; delete from fk_t where object_id is nu ...

  8. oracle model类型,Oracle SQL高级编程——Model子句全解析-Oracle

    下面的语句会报错,因既没有显式的指定求解顺序,又没有加Automatic Order,此时Oracle会使用Sequential Order这种顺序,并不适合这个规则. SH@ prod> se ...

  9. Oracle PL/SQL存储过程对象类型Object type详解 create type obj_type as object, create table tab_name of obj_type

    原 oracle 对象类型 object type 置顶 2011年06月13日 18:00:00 oypj2010 阅读数:3453 /* 对象类型属于用户自定义的一种复合类型,它封装了数据结构和拥 ...

最新文章

  1. ThreadLocal究竟存不存在内存泄漏?
  2. 南京大学「自然指数」超越清华北大,位列全国高校第一、世界第七,突显学术实力...
  3. Python函数作为参数传递给函数
  4. 有关 Nintendo GameCube
  5. matlab 倒数第二个位置_MATLAB中运行以下程序后倒数第二部分画图程序要怎么改??、、、...
  6. .NetCore2.1 WebAPI 根据swagger.json自动生成客户端代码
  7. VisualStudioAddIn2017.vsix的下载安装和使用
  8. 【英语学习】【English L06】U02 Food L3 Peking roast duck
  9. 细究STP根端口和指定端口的选举过程
  10. 联想童夫尧:细分市场将是PC未来新增长点
  11. java log4j 动态配置_动态更改log4j日志级别
  12. DirectX9学习(四)装载位图
  13. fw150us的linux驱动下载,迅捷FW150US1.0/2.0无线网卡驱动
  14. 选用计算机教材的理由原因,教材选用及管理规定
  15. c语言中while循环语句的作用,while和do while循环,C语言while和do while循环详解
  16. 影视文件下载,合并,修复,转换…
  17. Houdini图文笔记:Could not create OpenCL device of type (HOUDINI_OCL_DEVICETYPE)问题的解决
  18. wps如何在目录里面打省略号_在wps中怎么让文档目录的省略号对齐 - 卡饭网
  19. sgd kmeans
  20. 谷歌地图 替代_Google地图的替代品

热门文章

  1. 基于点云的三维物体表示与生成模型
  2. java Opencv 图片修复 Photo
  3. dom 元素拖拽实现
  4. 计算图像的标准差与方差(meanStdDev() 函数)
  5. 数据分析工具Pandas(7):数据清洗、合并、转化和重构
  6. Scanpy(二)对PBMC3k聚类
  7. MDNN:一种用于药物-药物反应预测的多模态深度神经网络
  8. Android源码下载总结
  9. tkinter安装_mac pyenv 安装tkinter,解决tkinter环境的问题
  10. 截断坐标轴参数的应用小例子