实验6+过程_函数和程序...

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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。

相关文档
最新文档