实验6+过程_函数和程序...
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验6过程、函数和程序包
姓名:学号:
专业:班级:
同组人:无实验日期:2013/7/21
【实验目的与要求】
⏹掌握过程的创建与调用
⏹掌握PL/SQL函数的编写与调用
⏹熟悉程序包的使用
【实验内容与步骤】
6.0.实验准备工作:PL/SQL程序文件的编辑与执行
1.使用文档编辑器编辑以下文件,并保存为aa.sql:
2.以scott身份登录,在SQ L Plus中执行@aa命令运行程序:
注:测试时,文件名请用全名(即包含路径,如:@c:\aa)
给出运行结果:
6.1.存储过程
1.最简单的存储过程编写与执行
(1)创建测试表
drop table Exam_Table;
create table Exam_Table(
e_id number(5),
e_name varchar2(20),
e_salary number(8,2)
);
(2)创建存储过程
create or replace procedure insert_salary (v_id number,v_name varchar2,v_salary number) is
begin
insert into Exam_Table values (v_id,v_name,v_salary);
commit;
dbms_output.put_line('数据插入成功');
end;
/
(3) 执行(调用)存储过程
exec insert_salary(6,'g',2000);
(4)查询执行结果
select * from Exam_Table;
给出执行的最后结果:
2.参数的使用:in/out/in out参数
阅读以下程序,理解不同类型参数使用的不同,运行程序,给出运行结果。
(1) 用两个参数:in ,out 传入一个姓名,输出:某某人你好:
create or replace procedure mp(v_in varchar2,v_out out varchar2)
is
begin
v_out:=v_in||'你好';
end;
declare
v_name varchar2(10);
begin
mp('scott',v_name);
dbms_output.put_line(v_name);
end;--输出:scott你好
给出运行结果:
(2)-- in out类型参数
create or replace procedure mp(name_in in varchar2,
name_out out varchar2,
name_in_out in out varchar2) is
begin
dbms_output.put_line(name_in);
name_out := '返回的参数name_out是' || name_in;
name_in_out := 'name_in_out是' || name_in || name_in_out;
end;
给出运行结果:
(3)定义一个返回多个值的存储过程。
create or replace procedure p_test(name out varchar2,age out number,sex out varchar2,sal out number)
is
begin
name:='scott';
age:=26;
sex:='男';
sal:=8000;
end;
declare
v_name varchar2(20);
v_age number(10);
v_sex varchar2(5);
v_sal number(10);
begin
p_test(v_name,v_age,v_sex,v_sal);
dbms_output.put_line(v_name);
dbms_output.put_line(v_age);
dbms_output.put_line(v_sex);
dbms_output.put_line(v_sal);
end;
给出运行结果:
3.练习:根据测试表完成下列程序的编写,并给出测试结果:
(1)已知有如下表和相应的数据,请根据要求完成实验。
create table departments(
DEPARTMENT_ID NUMBER(4) primary key,
DEPARTMENT_NAME V ARCHAR2(30),
MANAGER_ID NUMBER(6),
LOCATION_ID NUMBER(4)
);
insert into departments values(1,'技术部',1,1);
insert into departments values(2,'人事部',2,2);
insert into departments values(3,'市场部',3,3);
insert into departments values(4,'财务部',4,4);
根据上表结构编写存储过程,实现以下功能,并给出测试结果。
1)根据指定的部门更新指定部门名(DEPARTMENT_NAME)的管理者(MANAGER_ID)id。