2018.5.30 Oracle数据库PLSQL编程---游标的使用
显示游标的步骤
/*
显示游标处理步骤
1.声明游标
语法结构:cursor 游标名称 is SQL 语句;
2.打开游标
语法结构:open游标名称;
3.提取数据
语法结构:fetch
4.关闭游标
*/
1.显示员工表中的姓名(返回的是多条记录,必须使用游标来处理)
set serveroutput on;--设置plslql显示结果命令
--代码块
declare
--变量
--1.声明游标
cursor c_emp is select ename,sal from emp;
v_ename emp.ename%type;
v_sal emp.sal%type;
begin
--代码块
--2.打开游标
open c_emp;
--使用loop循环
loop
--3.提取数据
fetch c_emp into v_ename,v_sal;
exit when c_emp%notfound; --判断游标是否还有数据
--输出信息
dbms_output.put_line('姓名:'||v_ename||',工资:'||v_sal);
end loop;
end;
/
--4.关闭游标
close c_emp;
end;
--2.record类型实现
declare
cursor c_emp is select ename,sal from emp;
type type_emp is record(
v_ename emp.ename%type,
v_sal emp.sal%type
);
v_record type_emp;
begin
--代码块
--2.打开游标
open c_emp;
--使用loop循环
loop
--3.提取数据
fetch c_emp into v_record;
exit when c_emp%notfound; --判断游标是否还有数据
--输出信息
dbms_output.put_line('姓名:'||v_record.v_ename||',工资:'||v_record.v_sal);
end loop;
--4.关闭游标
close c_emp;
end;
--3.扩展:使用游标类型来转换
declare
cursor c_emp is select ename,sal,dname,loc from emp e,dept d where e.deptno=d.deptno;
v_cursor_emp c_emp%rowtype;
begin
--代码块
--2.打开游标
open c_emp;
--使用loop循环
loop
fetch c_emp into v_cursor_emp;
--3.提取数据
exit when c_emp%notfound; --判断游标是否还有数据
--输出信息
dbms_output.put_line('姓名:'||v_cursor_emp.ename||',工资:'||v_cursor_emp.sal || '部门名字:'||v_cursor_emp.dname);
end loop;
--4.关闭游标
close c_emp;
end;
--4.for(声明游标即可)
declare
cursor c_emp is select ename,sal,dname,loc from emp e,dept d where d.deptno=e.deptno;
begin
for i in c_emp loop
dbms_output.put_line('姓名:'||i.ename|| '工资:'||i.sal||'部门名称'||i.dname);
end loop;
end;
--5.带参数的游标
declare
cursor c_emp(v_deptno emp.deptno%type)is select ename,sal,dname,loc from emp e,dept d where d.deptno=e.deptno;
begin
for i in c_emp(&n) loop
dbms_output.put_line('姓名:'||i.ename|| '工资:'||i.sal||'部门名称'||i.dname||i.dname);
end loop;
end;
--6.触发器
create or replace trigger t_1
after
insert on emp
begin
dbms_output.put_line('数据已经插入');
end;
insert into emp(empno,ename) values(11,'Legend');
最新文章
- 死去活来,而不变质:Domain Model(领域模型) 和 EntityFramework 如何正确进行对象关系映射?
- 调用回调函数出现或者大循环出现has triggered a breakpoint
- FW开发代码规范---小任性(2)
- linux SMP启动
- netfilter分析
- EventBus框架在Android多Pane(Fragment)中的应用
- JBOSS批量扫描
- is not in the sudoers file 解决(转)
- MySQL中查询时";Lost connection to MySQL server during query";报错的解决方案
- treesoft,couchDB,
- Python:Day41 http、css
- this is incompatible with sql_mode=only_full_group_by
- IDEA下搭建Shiro-web环境,总是报BasicDataSource,classnotfound;问题解决
- Zookeeper客户端Curator---Getting Started
- 我是该学JAVA呢,还是学IOS开发呢?
- NO--15 微信小程序,scroll-view选项卡和跳转
- jquery背景backgroundPosition插件
- cakephp获取最后一条sql语句
- 安装caffe(opencv3+anaconda3)
- Java List序列化的实现
热门文章
- elasticsearch 聚合查询
- 2017-10-4 清北刷题冲刺班p.m
- 老男孩Day1作业(一):编写登录接口
- 事务隔离实现并发控制:MySQL系列之十
- [题解](树形dp/记忆化搜索)luogu_P1040_加分二叉树
- 修改profile出错后的补救
- POJ1014 Dividing
- [Leetcode]008.String to Integer (atoi)
- Angular学习笔记【ngx-bootstrap】中的 tabset
- Ehab and subtraction(思维题)