答案实验五 ORACLE编程 一

发布 2022-09-02 14:03:28 阅读 8972

《oracle技术》实验报告(五)

实验名称oracle编程(一)

姓名学号班级。

实验目的(1)熟练掌握编写和调试pl/sql块的方法。(2)熟练掌握编写和调试存储过程方法。(3)熟练掌握编写和调试函数方法。

4)熟练掌握各种控制结构语句的使用。

实验内容(1)编写一个pl/sql块,输出emp表中所有员工的员工名、员工号、工资和部门号。

beginfor v_emp in(select*from emp)loop dbms_

v_end loop;

end;2)创建一个存储过程,以员工号为参数,输出该员工的工资。

提示:如果不存在该员工,则显示“员工号不存在”)

create or replace procedure

output_sal(p_empno

asv_sal

beginselect sal into v_sal from emp where empno=p_empno;

dbms_exception

when no_data_found then

dbms_员工号不存在’);

成绩。end;

3)编写一个pl/sql块,查询名为“smith”的员工信息,并输出其员工号、工资、部门号。如果该员工不存在,则插入一条。

新记录,员工号为2007,员工名为“smith”,工资为1500,部门号为10。如果存在多个名为“smith”的员工,则输出所。

有名为“smith”的员工号、工资和部门号。(提示:要使用。

no_date_found和too_many_rows两个异常。)

declare

v_empno

v_sal

v_deptno

beginselect empno,sal,deptno into

v_empno,v_sal,v_deptno from emp where ename=’smith’;

dbms_ no);

exception

when no_data_found then

insert into emp(empno,ename,sal,deptno) values(2007,’smith’,1500,10);

when too_many_rows then

for v_emp in(select empno,sal,deptno from emp where ename=’smith’)loop

dbms_v_

end loop;

end;4)创建一个存储过程,以部门号为参数,输出该部门入职日期最早的员工姓名。

提示:如果不存在该部门,则显示“无此部门或此部门无员工!”)create or replace procedure cc(p_deptno

asv_ename

beginselect ename into v_ename from emp where deptno=p_deptno

实验内容。and hiredate=(select min(hiredate)from emp where

deptno=p_deptno);

dbms_exception

when no_data_found then

dbms_'无此部门或此部门没有员工!')end;

5)创建一个函数,以员工号为参数,返回该员工的工资。

create or replace function

ret_sal(p_empno

return

asv_sal

beginselect sal into v_sal from emp where empno=p_empno;

return v_sal;

exception

when no_data_found then

return-1;

end;6)编写一个pl/sql块调用(5)中创建的函数。如果不存在该员工,则显示“员工号不存在!”。

命令:declare

v_empno

v_sal

beginv_empno:=&x;

v_sal:=ret_sal(v_empno);

if v_sal=-1then

dbms_员工号不存在’);

elsedbms_

end if;

end;7)创建一个函数,以部门号为参数,返回该部门的平均工资。

create or replace function

ret_**gsal(p_deptno

return

asv_**gsal

beginselect **g(sal)into v_**gsal from emp where deptno=p_deptno;

if v_**gsal is null then

return-1;

elsereturn v_**gsal;

end if;

end;8)编写一个pl/sql块调用(7)中创建的函数。如果不存在该部门,则显示“部门号不存在!”。

declare

v_deptno

v_**gsal

beginv_deptno:=&x;

v_**gsal:=ret_**gsal(v_deptno);

if v_**gsal=-1then

dbms_部门号不存在!’)

else dbms_

end if;

end;9)创建一个函数,以员工号为参数,返回该员工所在部门的平均工资。

create or replace function

ret_**gsal_empno(p_empno

return

asv_deptno

v_**gsal

beginselect deptno into v_deptno from emp

where empno=p_empno;

select **g(sal)into v_**gsal from emp

where deptno=v_deptno;

return v_**gsal;

exception

when no_data_found then

return-1;

end;10)编写一个pl/sql块调用(9)中创建的函数。如果不存在该部门,则显示“员工号不存在!”。

declare

v_empno

beginv_empno:=&x;

v_**gsal:=ret_**gsal_empno(v_empno);

if v_**gsal=-1then

dbms_员工号不存在!’)

elsedbms_

end if;

end;11)创建一个存储过程,以一个整数为参数,输出工资最高的前几个(参数值)员工的姓名。

create or replace procedure max_n(p_n int)

as v_i int:=1;

beginfor v_emp in(select*from emp order by sal desc)loop

dbms_exit when v_i=p_n;

v_i:=v_i+1;

end loop;

end;12)创建一个存储过程,以两个整数为参数,输出工资排序在两个参数之间的员工姓名。

create or replace procedure min_max(p_m int,p_n int) as

v_i int:=1;

beginfor v_emp in(select*from emp where sal between p_m and p_n order by sal)loop

dbms_'

||v_end loop;

end;

Oracle实验四答案

select initcap ename from emp 显示正好为5个字符的员工姓名。select ename from emp where length ename 5 显示不带有r的员工姓名。select from emp where ename not like r 显示所有员工的前三个字...

oracle期末实验含答案

1 数据库的建表语句,我们是必须要掌握的,其中,主外键的定义是一种数据库完整性的规范,我们也要掌握。创建如下两个表 course表 cid number 主键。cname varchar2 create table course cid number primary key,cname varcha...

实验1编程环境 答案

c语言 上机实验一。学号姓名。实验目的 1.熟悉visual c 6.0 简称vc 6.0 的语言集成编译环境 2.掌握c语言程序的上机步骤。实验内容 1.熟悉vc 6.0的编译环境 参考第370页附录a 建议 事先建立一个特定的文件夹,专门用于保存你的c程序。例如,在e盘中新建文件夹 vc pro...