实验7-存储过程应用初步

合集下载

实验7_存储过程应用初步

实验7_存储过程应用初步

《数据库原理及应用》课程实验报告实验名称存储过程应用初步实验序号实验日期班级学号姓名院系计算机科学与信息工程学院专业计算机科学与技术指导教师成绩一、实验目的和要求1. 理解存储过程的作用;2.初步掌握存储过程的创建方法;3.初步掌握存储过程的执行方法。

4. 这个实验所涉及的容不属于《数据库原理及应用》课知识,是扩充知识,主要是为即将到来的课程设计做部分准备工作。

二、实验预习容1.上网查找资料---存储过程是数据库中的一个怎样的对象;主要应用在哪些方面;存储过程的类型等基本知识。

2.创建存储过程的方法,包括有参数和无参数的存储过程。

其中可能涉及到变量、系统函数SQL控制流语句等容。

三、实验项目摘要1.针对“图书-借阅”涉及的5表,自行设计3个存储过程(要有实际意义),执行它们,看结果是否是你所需要的;2.针对“供应”涉及的4表,设计3个存储过程(要有实际意义),执行它们,看结果是否是你所需要的。

说明:设计的存储过程不可以太过简单(如只有一个简单查询),要会设计带参数的存储过程。

同学们可以根据自己对知识的掌握情况,自行决定如何设计。

四、实验结果与分析1.(1)创建(无参数)查询‘文学’类图书中出版时间最早的最早的图书信息的存储过程并执行:1、书写T-SQL语句,创建过程一:CREATE PROCEDURE GUOCHENG_ONE AS/*新建过程一*/SELECT图书名,作者,FROM BOOKS,BOOKCATEGORYWHERE出版日期IN(SELECT MIN(出版日期)FROM BOOKSWHERE BOOKS.种类编号=BOOKCATEGORY.种类编号AND种类名称='文学')/*T-SQL语句*/GOII、执行过程一:EXECUTE GUOCHENG_ONE /*执行该存储过程功能*/(或者:EXEC GUOCHENG_ONE )(2)(单个参数)查询:设置一个存储过程GUOCHENG_TWO,通过指定可变的读者,显示其所借阅的图书的图书名:I、先以一个“具体的”书写T-SQL语句,检验语法错误;无误后以变量代替“具体的”,进而创建过程二:SELECT图书名FROM BOOKSWHERE图书编号IN(SELECT图书编号FROM BORROWWHERE读者编号IN(SELECT读者编号FROM READERSWHERE='于志强'))CREATE PROCEDURE GUOCHENG_TWO NAME varchar(10)AS/*新建过程二*/SELECT图书名FROM BOOKSWHERE图书编号IN (SELECT图书编号FROM BORROWWHERE读者编号IN (SELECT读者编号FROM READERSWHERE=NAME ))GO/*过程功能*/II、执行上述过程,即随意指定读者,查询其借阅图书的图书名:EXECUTE GUOCHENG_TWO NAME='明'/*执行该存储过程功能*/EXECUTE GUOCHENG_TWO NAME='明'/*执行该存储过程功能*/(3)设置(多个参数)插入一条记录的过程;完成后并执行该过程将:“读者编号:1243;:翟萌;种类编号:2;工作单位:交通大学;住址:桃苑小区3-415;联系:83839228;登记日期:2014-04-15;性别:男”这些容添加到到表READERS中:I、创建向表READER插入记录的过程如下:CREATE PROCEDURE GUOCHENG_THREEREADERS_NUMBER nchar(10),NAME varchar(20),RANGE_NUMBER int,COMPANY varchar(50), ADD varchar(100),TEL varchar(20),DATE datetime,SEX char(2)AS/*新建过程三*/INSERT INTO READERS VALUES(READERS_NUMBER,NAME,RANGE_NUMBER ,COMPANY,ADD,TEL,DATE,SEX)/*过程功能*/GOII、执行该过程,将记录插入到表中:EXECUTE GUOCHENG_THREEREADERS_NUMBER='1243',NAME='翟萌',RANGE_NUMBER='2',COMPANY='交通大学', ADD='桃苑小区-415',TEL='83839228',DATE='2014-04-15',SEX='男'/*执行该存储过程功能*/2.(1)创建带输出参数的存储过程,要求求出零件表P中所有蓝色零件重量的平均值,并将结果通过输出变量返回给用户:I、创建具有上述功能的带输出参数的存储过程:CREATE PROCEDURE GUOCHENG_FOUR PJZ INT OUTPUTAS/*创建过程四*/SELECT PJZ=AVG(WEIGHT)FROM零件表PWHERE COLOR ='蓝'/*过程功能*/GOII、执行该过程:DECLARE PJZ INTEXECUTE GUOCHENG_FOUR PJZ OUTPUTPRINT'零件表中所有蓝色零件的平均重量为'+STR(PJZ)GO(2)创建带输入输出参数的存储过程,要求求出“用户指定的供应商”提供给“用户指定的工程”的”所有零件重量”的平均值,并将结果通过输出变量返回给用户:I、创建具有上述功能的带输入输出参数的存储过程:CREATE PROCEDURE GUOCHENG_FIVE GYSN NCHAR(10),GCN NCHAR(10),PJZ INT OUTPUTAS/*创建过程四*/SELECT PJZ=AVG(WEIGHT)FROM零件表PWHERE PN IN(SELECT PNFROM供应关系表SPJWHERE SN IN(SELECT SNFROM供应关系表SPJWHERE SN=GYSN)AND JN IN(SELECT JNFROM供应关系表SPJWHERE JN=GCN))/*过程功能*/GOII、假设用户指定供应商为S4,工程为J4,执行上述过程:DECLARE PJZ INTEXECUTE GUOCHENG_FIVE 'S5','J4',PJZ OUTPUTPRINT'零件的平均值为'+STR(PJZ)GO(3)(无参数)更新“供应商表”用户指定值的供应表信息:I、创建具有上述功能的存储过程:CREATE PROCEDURE GUOCHENG_SIX GYSN NCHAR(10),GYSNAME NCHAR(10),CSM VARCHAR(50)AS/*创建过程六*/UPDA TE供应商表SSET SNAME=GYSNAME,CITY=CSMWHERE SN=GYSN /*过程功能*/GOII、指定S4,修改名称为“SN8”,城市为“土耳其”:附:之前实验报告修改实验五1.1)查询“计算机科学”这类图书中的定价最高的图书书名和定价;SELECT图书名,价格AS定价FROM Books,BookCategoryWHERE价格=(SELECT MAX(价格)FROM BooksWHERE Books.种类编号=BookCategory.种类编号AND种类名称='计算机科学')实验六3.导入“图书借阅”5表的关系图;导入供应商等四表的关系图。

实验七 存储过程及应用完整版含截图

实验七 存储过程及应用完整版含截图

实验七存储过程及应用1.实验目的1、理解存储过程的概念。

2、掌握存储过程的使用方法。

2.实验要求1.建立如下的存储过程(基于前面实验建立的表和插入的数据,并为每个存储过程设计返回的状态值):(1)按要求设计完成如下功能的存储过程。

①查询平均分数在x到y范围内的学生信息。

说明:该存储过程有两个参数;要求查询的学生信息包括学号、姓名、院系名称和平均分数。

②更新操作,以学号、课程编号和考试成绩作参数更新指定学生和课程的考试成绩,并返回该学生的平均成绩。

(2)自行再分别设计一个完成查询和完成操作功能的存储过程(在实验报告中要准确描述功能需求)。

(3)在客户端以存储过程和输入SQL语句的方式分别执行相同的查询或操作,比较使用和不使用存储过程的区别。

3、实验过程(1)①查询平均分数在x到y范围内的学生信息create procedure cc711@x smallint,@y smallintasselect学生.学号,学生.姓名,院系.名称,学生.平均成绩from学生join院系on学生.院系=院系.编号where学生.平均成绩between@x and@yEXECUTE cc71160,90②更新操作,以学号、课程编号和考试成绩作参数更新指定学生和课程的考试成绩,并返回该学生的平均成绩create procedure mcc712@xh nchar(8),@kcbh nchar(8),@cj intasupdate选课set成绩=@cj where学号=@xh and课程编号=@kcbhdeclare@pjcj intselect@pjcj=AVG(成绩)from选课where学号=@xhreturn@pjcjdeclare@avg intexecute@avg=mcc7122,5,98print'更新后平均成绩:'+str(@avg,6)(2)自行再分别设计一个完成查询和完成操作功能的存储过程(在实验报告中要准确描述功能需求)。

储存过程实验报告

储存过程实验报告

一、实验背景随着数据库技术的不断发展,数据库管理系统(DBMS)的功能日益强大,存储过程作为一种重要的数据库对象,在数据库应用中扮演着越来越重要的角色。

存储过程能够封装复杂的业务逻辑,提高数据库性能,增强数据安全性。

本实验旨在通过实际操作,掌握存储过程的创建、执行和管理方法,提高数据库应用开发能力。

二、实验目的1. 理解存储过程的概念和作用。

2. 掌握存储过程的创建、执行和管理方法。

3. 学会使用存储过程优化数据库性能。

4. 提高数据安全性。

三、实验环境1. 操作系统:Windows 102. 数据库:MySQL 5.73. 编程语言:MySQL四、实验内容1. 创建存储过程2. 调用存储过程3. 管理存储过程4. 优化存储过程性能五、实验步骤1. 创建存储过程(1)创建一个名为“get_user_info”的存储过程,用于查询用户信息。

```sqlDELIMITER //CREATE PROCEDURE get_user_info(IN user_id INT)BEGINSELECT FROM users WHERE id = user_id;END //DELIMITER ;```(2)创建一个名为“update_user_info”的存储过程,用于更新用户信息。

```sqlDELIMITER //CREATE PROCEDURE update_user_info(IN user_id INT, IN username VARCHAR(50), IN email VARCHAR(100))BEGINUPDATE users SET username = username, email = email WHERE id = user_id;END //DELIMITER ;```2. 调用存储过程(1)调用“get_user_info”存储过程查询用户信息。

```sqlCALL get_user_info(1);```(2)调用“update_user_info”存储过程更新用户信息。

实验7 存储过程实验

实验7 存储过程实验

《数据库原理与应用》课程实验报告
学院:物光学院班级:07网工姓名:学号:
实验设备:计算机1台实验日期:年月日
实验项目名称存储过程
实验目的 1.掌握创建和使用存储过程。

2.掌握显示存储过程。

3.掌握删除存储过程。

实验要求:
1.熟悉查询分析器的操作,以及执行T-SQL语句的方法。

2.了解使用存储过程的优点。

实验内容(包括步骤):
1.创建一个为worker表添加职工记录的存储过程Addworker。

2.创建一个存储过程Delworker删除worker表中指定职工号的记录。

3.显示存储过程delworker。

4.删除存储过程addworker和delworker。

调试与结果测试:
代码注释:

――――――――――――以下内容为教师填写―――――――――――――――
教师评阅:
成绩:
年月日。

存储过程的使用 实验报告

存储过程的使用   实验报告
GO
USEypp7
--声明四个变量,用于保存输入和输出参数
DECLARE@KECHENGMINGvarchar(20)
DECLARE@AVGCHENGJI1tinyint
DECLARE@MAXCHENGJI1tinyint
DECLARE@MINCHENGJI1tinyint
--为输入参数赋值
SELECT@KECHENGMING='高等数学'
--声明四个变量,用于保存输入和输出参数
DECLARE@KECHENGMINGvarchar(20)
DECLARE@AVGCHENGJI1tinyint
DECLARE@MAXCHENGJI1tinyint
DECLARE@MINCHENGJI1tinyint
--为输入参数赋值
SELECT@KECHENGMING='计算机基础'
1.使用if exists语句,如果存储过程“单科成绩分析”存在,就将其删除;
2.使用create proc语句创建存储过程;
3.定义所需要的输入参数和输出参数;
4.声明4个变量来保存输入和输出参数;
5.执行存储过程并显示结果。
同时,值得注意的是,在创建存储过程时,应该注意一些细节,如单词的拼写要准确无误,程序中用的是单引号而不是双引号等等。
--执行存储过程
EXEC单科成绩分析@KECHENGMING,
@AVGCHENGJI1OUTPUT,
@MAXCHENGJI1OUTPUT,
@MINCHENGJI1OUTPUT
--显示结果
SELECT@KECHENGMINGAS课程名,@AVGCHENGJI1AS平均成绩,@MAXCHENGJI1AS最高成绩,

实验七 使用PLSQL编写存储过程访问数据库

实验七 使用PLSQL编写存储过程访问数据库

实验七使用PL/SQL编写存储过程访问数据库一、实验目的1、熟悉存储过程编译过程、工作原理及其优点;2、熟悉使用存储过程来进行数据库应用程序的设计。

二、实验条件1、具有局域网的计算机机房一个;2、SQL SERVER2000或SQL SERVER2005软件。

三、实验内容对教材“学生-课程”数据库(student表,course表,sc表),编写存储过程,分别完成下面功能:create table Student(Sname char(12)primary key,Ssex char(2),Sage int,Sdept char(12));create table Course(Cname char(12)primary key,Cpno int,Ccredit int);create table SC(Cno char(12)primary key,Grade int);①建立存储过程完成统计“离散数学”的成绩分布情况,即按照各分数段统计人数;create procedure Proc_1asselect count(*),Cname,Grade from sc wherecname in(select Cname from Course where cname='db');exec Proc_1;②建立存储过程完成统计任意一门课的平均成绩;create procedure Proc_2asselect avg(grade),cname from sc where camme='db'exec Proc_2;③建立存储过程完成将学生选课成绩从百分制改为等级制(即A、B、C、D、E);create or replace procedure change_critical()as declarechgrade char(1);currecord record;beginalter table SC add column(newgrade char(1));for currecord in select*from SC loopif currecord.grade<60then chgrade='E';else if currecord.grade<70then chgrade='D';else if currecord.grade<80then chgrade='C';else if currecord.grade<90then chgrade='B';else chgrade='A';end if;update SC set newgrade=chgradewhere sno=currecord.sno and cno=o;end loop;alter table SC drop column grade;alter table SC rename newgrade to grade;end;④建立存储过程完成对学生表的批量插入数据,插入数据的条数作为其中一个参数,另一个参数为学号起始学号,其它数据格式自行定义(如每次插入100条数据);create procedure proc_4@count int,@startsno char(9)asdeclare@loop intset@loop=0while@loop<@countbegininsert into student(sno,sname,ssex,sage,sdept)values(@startsno,'zj','M',20,'IS')set@loop=@loop+1set@startsno=@startsno+1endexec proc_4100,'20130901';要求:提交源程序并标识必要的注释。

存储过程操作实验报告

存储过程操作实验报告

一、实验模块数据库原理与应用二、实验标题存储过程操作实验三、实验内容1. 实验目的(1)掌握存储过程的概念和作用。

(2)学会创建和使用存储过程。

(3)了解存储过程与触发器的区别。

2. 实验原理存储过程是一组为了完成特定功能的SQL语句集,存储在数据库中供应用程序调用。

它可以提高数据库性能,简化代码编写,提高安全性。

3. 实验步骤(1)创建数据库```sqlCREATE DATABASE IF NOT EXISTS experiment;USE experiment;```(2)创建表```sqlCREATE TABLE IF NOT EXISTS employee (id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(50),age INT,department_id INT);CREATE TABLE IF NOT EXISTS department (id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(50));```(3)插入数据```sqlINSERT INTO employee (name, age, department_id) VALUES ('张三', 25, 1),('李四', 30, 2),('王五', 28, 3);INSERT INTO department (name) VALUES ('技术部'),('业务部'),('售后部');```(4)创建存储过程```sqlDELIMITER //CREATE PROCEDURE get_department_name(IN emp_id INT, OUT dept_name VARCHAR(50))BEGINSELECT INTO dept_name FROM employee e INNER JOIN department d ON e.department_id = d.id WHERE e.id = emp_id;END //DELIMITER ;```(5)调用存储过程```sqlCALL get_department_name(1, @dept_name);SELECT @dept_name AS department_name;```(6)创建触发器```sqlDELIMITER //CREATE TRIGGER before_employee_insertBEFORE INSERT ON employeeFOR EACH ROWBEGINIF NEW.age < 20 THENSIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = '年龄不能小于20岁'; END IF;END //DELIMITER ;```(7)尝试插入年龄小于20岁的数据```sqlINSERT INTO employee (name, age, department_id) VALUES ('赵六', 18, 1);```4. 实验结果与分析(1)成功创建存储过程和触发器。

实验存储过程实验报告

实验存储过程实验报告

一、实验目的1. 了解存储过程的基本概念和作用。

2. 掌握存储过程的创建、执行和修改方法。

3. 学会使用存储过程进行数据库操作,提高数据库操作效率。

二、实验环境1. 操作系统:Windows 102. 数据库管理系统:MySQL 5.73. 开发工具:MySQL Workbench三、实验内容1. 创建存储过程2. 执行存储过程3. 修改存储过程4. 删除存储过程四、实验步骤1. 创建存储过程(1)打开MySQL Workbench,连接到本地数据库。

(2)在查询窗口中输入以下SQL语句创建一个存储过程:DELIMITER //CREATE PROCEDURE SelectAllStudents()BEGINSELECT FROM students;END //DELIMITER ;(3)执行以上SQL语句,成功创建存储过程。

2. 执行存储过程(1)在查询窗口中输入以下SQL语句执行存储过程:CALL SelectAllStudents();(2)观察查询结果,确认存储过程执行成功。

3. 修改存储过程(1)打开查询窗口,输入以下SQL语句修改存储过程:DELIMITER //CREATE PROCEDURE SelectAllStudents()BEGINSELECT id, name, age FROM students;END //DELIMITER ;(2)执行以上SQL语句,成功修改存储过程。

4. 删除存储过程(1)在查询窗口中输入以下SQL语句删除存储过程:DROP PROCEDURE IF EXISTS SelectAllStudents;(2)执行以上SQL语句,成功删除存储过程。

五、实验总结1. 通过本次实验,我们了解了存储过程的基本概念和作用,学会了创建、执行、修改和删除存储过程的方法。

2. 存储过程可以提高数据库操作效率,降低代码重复性,提高代码可维护性。

3. 在实际开发过程中,合理使用存储过程可以简化数据库操作,提高应用程序的性能。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《数据库原理及应用》课程实验报告
EXECUTE GUOCHENG_ONE /*执行该存储过程功能*/
(或者:EXEC GUOCHENG_ONE )
(2)(单个参数)查询:设置一个存储过程GUOCHENG_TWO,通过指定可变的读者姓名,显示其所借阅的图书的图书名:
I、先以一个“具体的姓名”书写T-SQL语句,检验语法错误;无误后以变量代替“具体的姓名”,进而创建过程二:
①SELECT图书名
FROM BOOKS
WHERE图书编号IN(SELECT图书编号
FROM BORROW
WHERE读者编号IN(SELECT读者编号
FROM READERS
WHERE姓名='于志强'))
②CREATE PROCEDURE GUOCHENG_TWO @NAME varchar(10)
AS/*新建过程二*/
SELECT图书名
FROM BOOKS
WHERE图书编号IN (SELECT图书编号
FROM BORROW
WHERE读者编号IN (SELECT读者编号
FROM READERS
WHERE姓名=@NAME ))
GO
/*过程功能*/
II、执行上述过程,即随意指定读者姓名,查询其借阅图书的图书名:
EXECUTE GUOCHENG_TWO @NAME='李明'/*执行该存储过程功能*/。

相关文档
最新文档