文档章节

5:函数,游标

o
 osc_z1hvg4cu
发布于 2018/04/24 16:36
字数 418
阅读 11
收藏 0

精选30+云产品,助力企业轻松上云!>>>

函数语法

--创建函数,参数是部门名称,返回值 是该部门平均薪资
create or replace function fun_avgsal
(
  dno number
)
return number -- 返回值类型
is
begin
  
  declare
  v_avgsal emp.sal%type;
  begin
  select sal into v_avgsal 
  from emp where emp.empno = dno;
  return(v_avgsal);
  end;
end;

调用:

--调用
declare
  avgsal emp.sal%type;
  begin
    avgsal := fun_avgsal(30);
    dbms_output.put_line(avgsal);
end;

 

游标:一个存储上下文信息的对象,理解为‘集合’

隐式游标:

--使用隐式游标
--更新7788的薪资
begin 
  update emp set sal = sal +100 where empno = 7788;
  
  --使用隐式游标
  --怎么知道上方语句是否被执行,根据的是数据库更新条数
  --存储的是刚刚执行的sql语句
  if SQL%FOUND then
    dbms_output.put_line('更新成功');
    commit;
  else
    dbms_output.put_line('更新失败');
    rollback;
  end if;    
end;

显示游标:语法

--显示游标的使用
--声明游标,提取7788的人的名字和职务
declare
  v_name emp.ename%type;
  v_job emp.job%type;
  cursor emp_cur --1:声明游标
  is
  select ename,job from emp where emp.empno = 7788;
begin
  --在执行部分使用游标
  --2:打开游标
   open emp_cur;
   --3:提取游标的值
   fetch emp_cur into v_name,v_job;
   dbms_output.put_line(v_name || v_job);
   --4:关闭游标
   close emp_cur;
end;

存放多条数据

--声明游标存放多条数据,遍历取出数据
declare 
cursor emp_cursor
is
select * from emp where emp.deptno = 20;
begin
  --for循环不需要手动打开游标,自动打开
  for emps in emp_cursor loop
  dbms_output.put_line(emps.empno ||','||emps.ename);
  end loop;
end;
--另一种循环写
declare
emps emp%rowtype;
cursor emp_cur
is
select * from emp where emp.deptno = 20;
begin
  open emp_cur;
  loop
  fetch emp_cur into emps;
  exit when emp_cur%notfound;
  dbms_output.put_line(emps.empno ||','||emps.ename);
  end loop;
end;

带参游标

--带参游标
declare
v_name emp.ename%type;
v_sal emp.sal%type; 
cursor emp_cur(eno number)
is
select ename,sal from emp
where emp.empno = eno;
begin
  open emp_cur(7788);
  fetch emp_cur into v_name,v_sal;
  dbms_output.put_line(v_name||','||v_sal);
  close emp_cur;
end;

 

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。
线性表的链式存储——单链表的遍历与优化

1,如何遍历单链表中的每一个数据元素? 1,当前单链表遍历方法: 1,插入的时间复杂度为 O(n),而遍历的时间复杂度为 O(nn); 2,遗憾的事实: 1,不能以线性的时间复杂度完成单链表的遍历;...

osc_tlt7xl5y
2019/05/25
1
0
Oracle数据库基本操作(四) —— PLSQL编程

  Procedure Language 实际上是Oracle对SQL语言的能力扩展,让SQL语言拥有了if条件判断,for循环等处理。 一、PLSQL基本语法 1 DECLARE2 -- 声明部分3 变量名 变量类型 := 初始值4 变量名 em...

osc_qvzk8wey
2018/03/06
2
0
SQL Server 开发指南

SQL Server 数据库设计 一、数据库设计的必要性 二、什么是数据库设计 三、数据库设计的重要 四、数据模型 实体-关系(E-R)数据模型 实体(Entity) 属性(Attribute) 关系(Relationship)...

ibm_hoojo
2011/07/21
0
0
SQL Server 开发指南

SQL Server 数据库设计 一、数据库设计的必要性 二、什么是数据库设计 三、数据库设计的重要 四、数据模型 实体-关系(E-R)数据模型 实体(Entity) 属性(Attribute) 关系(Relationship)...

hoojo
2011/07/21
0
0
线性表的链式存储结构——单链表的遍历与优化

1,如何遍历单链表中的每一个数据元素? 1,当前单链表遍历方法: 1,插入的时间复杂度为 O(n),而遍历的时间复杂度为 O(n*n); 2,遗憾的事实: 1,不能以线性的时间复杂度完成单链表的遍历...

子宇24
2019/05/25
0
0

没有更多内容

加载失败,请刷新页面

加载更多

如果你失明了,你怎么编程? - How can you program if you're blind?

问题: Sight is one of the senses most programmers take for granted. 视觉是大多数程序员认为理所当然的感官之一。 Most programmers would spend hours looking at a computer monitor......

技术盛宴
25分钟前
10
0
如何删除使用Python的easy_install安装的软件包? - How do I remove packages installed with Python's easy_install?

问题: Python's easy_install makes installing new packages extremely convenient. Python的easy_install使安装新包非常方便。 However, as far as I can tell, it doesn't implement th......

fyin1314
55分钟前
11
0
如何将逗号分隔的字符串转换为数组? - How to convert a comma separated string to an array?

问题: I have a comma separated string that I want to convert into an array, so I can loop through it. 我有一个逗号分隔的字符串,我想将其转换成数组,因此可以循环遍历它。 Is the...

富含淀粉
今天
13
0
深源恒际:担心个人身份被冒用?不存在!

本文作者:c****t 近日,苟晶被冒名顶替身份参加高考的事件在社会各界掀起广泛热议。事件调查结果公布后,舆论风向逆转,吃瓜群众认为当事人夸大其词消费了公众情绪,一边对当事人所遭遇的不...

百度开发者中心
昨天
5
0
CKEditor 5 + SpringBoot实战(三):SpringData JPA数据持久化

在本系列的文章中,我将介绍如何在Spring Boot Application中使用CKEditor编辑器。介绍的内容包括基本环境的搭建,文件上传,SpringData JPA数据持久化,CKEditor5的安装,CKEditor图片上传,...

树下魅狐
今天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部