2个回答
展开全部
--编写程序以显示各部门名称和该部门包含的员工姓名。要求使用显式的循环游标实现。
--1.还记得怎么打印九九乘法表吗?还知道什么是嵌套for循环吗?还记得外循环一次,内循环循环多次吗?
--2.用两个for来使用游标取值,先取部门表中的部门编号和部门名称的值,然后用取出来的部门编号的值在员工表中当where条件后面的条件来取同一部门下的所有的员工信息
--3.游标:首先声明两个游标,一个游标操作部门表的数据,一个游标来操作员工表的数据
declare
cursor c1 is select deptno,dname from dept;--这个游标保存的是部门编号和部门名称
cursor c2(no number) is select ename from emp where deptno=no;--这个是带有部门编号的参数游标,保存的是同一部门下面所有的员工姓名
begin
for d1 in c1 loop --d1:是for循环自带的特点:允许用户自己任意输入的行变量的名字,而不用写行变量的声明,for循环自己会定义 in:是关键字 c1:是游标
dbms_output.put_line('部门编号: '||d1.deptno || '部门名称: '||d1.dname );--取值:行变量.列名
for e1 in c2(d1.deptno) loop --e1:是for循环自带的特点:允许用户自己任意输入的行变量的名字,而不用写行变量的声明,for循环自己会定义 in:是关键字 c2:是带参数的游标
--还记得调用一个带参数的方法,它的参数是可以直接在那个方法中直接使用,而不需要再定义的吗?
dbms_output.put_line('员工' || c2%rowcount ||'的名字: ' || e1.ename);
end loop ;
end loop ;
end ;
--1.还记得怎么打印九九乘法表吗?还知道什么是嵌套for循环吗?还记得外循环一次,内循环循环多次吗?
--2.用两个for来使用游标取值,先取部门表中的部门编号和部门名称的值,然后用取出来的部门编号的值在员工表中当where条件后面的条件来取同一部门下的所有的员工信息
--3.游标:首先声明两个游标,一个游标操作部门表的数据,一个游标来操作员工表的数据
declare
cursor c1 is select deptno,dname from dept;--这个游标保存的是部门编号和部门名称
cursor c2(no number) is select ename from emp where deptno=no;--这个是带有部门编号的参数游标,保存的是同一部门下面所有的员工姓名
begin
for d1 in c1 loop --d1:是for循环自带的特点:允许用户自己任意输入的行变量的名字,而不用写行变量的声明,for循环自己会定义 in:是关键字 c1:是游标
dbms_output.put_line('部门编号: '||d1.deptno || '部门名称: '||d1.dname );--取值:行变量.列名
for e1 in c2(d1.deptno) loop --e1:是for循环自带的特点:允许用户自己任意输入的行变量的名字,而不用写行变量的声明,for循环自己会定义 in:是关键字 c2:是带参数的游标
--还记得调用一个带参数的方法,它的参数是可以直接在那个方法中直接使用,而不需要再定义的吗?
dbms_output.put_line('员工' || c2%rowcount ||'的名字: ' || e1.ename);
end loop ;
end loop ;
end ;
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询