实验6 存储过程创建与应用

合集下载

实训六存储过程

实训六存储过程

实训六:存储过程1.实训目的1)通过对常用系统存储过程的使用,了解存储过程的类型;2)通过创建和执行存储过程,了解存储过程的基本概念,掌握使用存储过程的操作技巧和方法;3)通过对已创建的存储过程的改变,掌握修改存储过程的操作技巧和方法;2.实训工具SQL Server2005SQL Server Management Studio。

3 实训内容(保存操作过程程序设计语句和结果)1、使用sp_helptext查看byroyalty存储过程的文本,该存储过程在数据库pubs中。

2、在学生库中创建存储过程proc_8_t1,要求实现如下功能:产生学分为’4’的课程学生选课情况列表,其中包括课程号、课程名、学分、学号、姓名、系别、性别等。

并调用此存储过程,显示执行结果。

3、在学生库中创建存储过程proc_8_t2,要求实现如下功能:输入系号,产生该系学生的选课情况列表,其中包括系号、学号、姓名、课程号、课程名、成绩、学分等。

并调用此存储过程,显示信息系号为‘20’的所有学生的选课情况列表。

4、在学生库中创建存储过程proc_8_t3,要求实现如下功能:输入学生学号,根据该学生所选课程的总学分显示提示信息,如果总学分<9,则显示“此学生学分不足!”,否则显示“此学生学分已足!”。

并调用此存储过程,显示“1002”学生的总学分情况。

对学生库中已创建的存储过程proc_8_t1进行修改,要求在显示列表中增加教师字段,即产生学分为’4’的课程学生选课情况列表,其中包括课程号、课程名、授课教师号(TNO)、学分、学号、姓名、系别、专业、性别等。

5、对学生库中已创建的存储过程proc_8_t2进行修改,要求实现如下功能:输入课程名称,产生选修该课程所有男生的选课情况列表,其中包括学号、姓名、性别、课程号、课程名、成绩、学分等。

并调用修改后的存储过程,显示选修“离散数学”男生的选课情况列表。

6、对学生成绩库中已创建的存储过程proc_8_t3进行修改,要求实现如下功能:输入学生学号,根据该学生所选课程的总学分显示提示信息,如果总学分<9,则显示“此学生所选总学分为XXX,学分不足!”,否则显示“此学生所选总学分为XXX,学分已足!”。

实验六 MySql存储过程

实验六 MySql存储过程

实验六MySql存储过程一、实验目的1、熟悉MySql的存储过程二、实验内容1、建立一张学生表,属性有学号、姓名、年龄三个字段。

2、建立一个存储过程,实现学生的全查询3、分别用IN 和OUT实现姓名的调用4、声明一个变量,把变量加1,再把变量加入到学生表的学号字段中。

5、建立一个存储过程,外部调用这个存储过程,当外部传入的值是0时,则在学生表中插入一个学号是17的学生,如果是1时,则在学生表中插入一个学号是18的学生,如果都不是,则在学生表中插入一个学号是19的学生.6、建立一个存储过程,做一个循环语句,循环插入5个学生。

(至少用三种循环的存储过程方法)三、试验结果截图1.建立一张学生表,属性有学号、姓名、年龄三个字段。

2.建立一个存储过程,实现学生的全查询3.分别用IN 和OUT实现姓名的调用4.声明一个变量,把变量加1,再把变量加入到学生表的学号字段中。

5.建立一个存储过程,外部调用这个存储过程,当外部传入的值是0时,则在学生表中插入一个学号是17的学生,如果是1时,则在学生表中插入一个学号是18的学生,如果都不是,则在学生表中插入一个学号是19的学生.6建立一个存储过程,做一个循环语句,循环插入5个学生。

(至少用三种循环的存储过程方法)所有代码:1.create table stu(stuno int,stuna varchar(20),stuage int);insert into stu values(001,'zhangsan',22);insert into stu values(002,'lisi',23);insert into stu values(003,'wangwu',23);insert into stu values(004,'maliu',24);insert into stu values(005,'zhaoqi',25);insert into stu values(006,'gaoba',23);insert into stu values(007,'ddddd',22);insert into stu values(008,'ttttt',21);2.create procedure select_all()select * from stu;3.delimiter //create procedure searchno(in no int,out na varchar(20),out age int)beginselect stuna from stu where stuno=no into na;select stuage from stu where stuno=no into age; end //delimiter ;call searchno(n,@na,@age);select @na,@age;4.delimiter //create procedure noupdate(in n int)beginupdate stu set stuno=stuno+n;end //delimiter ;5.delimiter //create procedure addstu(in sno int)begincase snowhen 0 then insert into stu values(17,'no17',20); when 1 then insert into stu values(18,'no18',20); else insert into stu values(19,'no19',20);end case;end //delimiter ;6.(1).delimiter //create procedure add5stu1()begindeclare num1 int;set num1=0;loop_label:loopinsert into stu values (111,'111',20);set num1=num1+1;if num1>=5 then leave loop_label;end if;end loop;end //delimiter ;(2).delimiter //create procedure add5stu2()begindeclare num2 int;set num2=0;while num2<5 doinsert into stu values (222,'222',20);set num2=num2+1;end while;end //delimiter ;(3).delimiter //create procedure add5stu3()begindeclare num3 int;set num3=0;repeatinsert into stu values (333,'333',20);set num3=num3+1;until num3>=5end repeat;end //delimiter ;四、实验小结本次试验让我好好补习了下前段时间落下的课程,让我对数据库有了新的体会和认识,试验中碰到了一些问题,但都已解决和理解。

网络数据库实验六存储过程

网络数据库实验六存储过程

实验:存储过程实验学时:2个学时实验类型:(验证、综合、设计)一、内容概述:1、存储过程简介存储过程是存储于数据库中的一组T-SQL语句。

有了存储过程之后,与数据库的交互就没有必要在程序中写一堆的SQL语句,而只需用一条语句调用适当的存储过程来完成就可以了。

另外,由于代码是存储在数据库中,我们也可以在不同的应用程序或查询窗口中不断的重复利用那些代码。

存储过程功能的优点①预编译执行程序。

SQL Server只需要对每一个存储过程进行一次编译,然后就可以重复使用执行计划。

这个特点通过重复调用存储程序极大地提高了程序的性能。

②缩短客户端/服务器之间的信息传输量。

如果你的工作环境带宽有限,那么存储过程技术肯定能够满足你,因为它能够把需要传输的长的SQL查询缩短成一行。

③有效重复使用代码和编程。

存储过程可以为多个用户所使用,也可以用于多个客户程序。

这样可以减少程序开发周期的时间。

④增强安全性控制。

可以允许用户单独执行存储过程,而不给于其访问表格的权限。

2、创建存储过程语法CREATE PROC[ EDURE ] [ owner. ] procedure_name [ ; number ][ { @parameter data_type }[ VARYING ] [ = default ] [ OUTPUT ]] [ ,...n ][ WITH{ RECOMPILE | ENC RYPTION | RECOMPILE , ENC RYPTION } ][ FOR REPLICATION ]AS sql_statement [ ...n ]示例:AjaxCity表ID CityName Short1 苏州市SZ2 无锡市WX3 常州市CZ⑴.选择表中所有内容并返回一个数据集CREATE PROCEDURE mysp_AllASselect * from AjaxCityGO执行结果⑵.根据传入的参数进行查询并返回一个数据集CREATE PROCEDURE mysp_para@CityName varchar(255),@Short varchar(255)ASselect * from AjaxCity where CityName=@CityName And Short=@ShortGO执行结果⑶.带有输出参数的存储过程(返回前两条记录的ID的和)CREATE PROCEDURE mysp_output@SUM int outputASselect @SUM=sum([ID]) from (select top 2 * from AjaxCity) as tmpTable GO执行结果二、实验报告实验报告课程名称网络数据库SQL Server2005实验名称存储过程实验时间________年____月____日成绩一、实验目的1、熟悉存储过程基本概念和类型。

实训项目存储过程的创建和使用

实训项目存储过程的创建和使用

实训项⽬存储过程的创建和使⽤⽹络数据库实训报告⼀、实训⽬的和要求1、了解存储过程的作⽤;2、掌握创建、修改及删除存储过程的⽅法;3、掌握执⾏存储过程的⽅法。

⼆、实训所需仪器、设备硬件:计算机软件:操作系统Windows XP、SQL Server 2005三、实训内容(⼀)不带参数的存储过程的创建和修改1、在student数据库中创建⼀个名为myp1的存储过程,该存储过程的作⽤是显⽰t_student中的全部记录。

USE STUDENTIF EXISTS(SELECT name FROM sysobjectsWHERE name='mpy1'AND type='P')DROP PROCEDURE mpy1GOCREATE PROCEDURE myp1ASSelect*FROM T_STUDENTGO2、运⾏myp1,检查是否实现功能。

use studentexec myp13、修改myp1,使其功能为显⽰t_student中班级为05541班的学⽣记录,然后测试是否实现其功能。

set ANSI_NULLS ONset QUOTED_IDENTIFIER ONgoALTER PROCEDURE [dbo].[myp1]ASSelect*FROM T_STUDENTwhere left(s_number,5)='05541'use studentexec myp14、创建⼀个存储过程myp2,完成的功能是在表t_student、表t_course和表t_score 中查询以下字段:班级、学号、姓名、性别、课程名称、考试分数。

USE STUDENTIF EXISTS(SELECT name FROM sysobjectsWHERE name='myp2'AND type='P')DROP PROCEDURE myp2GOCREATE PROCEDURE myp2ASSelect班级=SUBSTRING(T_STUDENT.S_NUMBER,1,LEN(T_STUDENT.S_NUMBER)-2),学号=SUBSTRING(T_STUDENT.S_NUMBER,LEN(T_STUDENT.S_NUMBER)-1,2),S_NAME AS姓名,SEX AS性别,T_COURSE.C_NAME AS课程名称,t_SCORE.SCORE AS考试分数FROM T_STUDENT,T_COURSE,t_SCOREWHERE T_STUDENT.S_NUMBER=t_SCORE.S_NUMBERAND T_COURSE.C_NUMBER=t_SCORE.C_NUMBERGO(⼆)带输⼊参数的存储过程的创建1、创建⼀个带有⼀个输⼊参数的存储过程stu_info,该存储过程根据传⼊的学⽣编号,在t_student中查询此学⽣的信息。

实验六++存储过程建立与调用

实验六++存储过程建立与调用

实验六存储过程建立与调用实验名称:存储过程建立与调用(含带参存储过程的建立与调用)一、实验目的理解存储过程的概念、建立和调用方法。

二、实验环境采用Client/Server模式,学生为客户端,是MS SQL SERVER 2008的中文客户端。

登录用户名是:学号;密码为:****** 。

用户名和密码以任课老师给出为准。

三、实验示例1、模糊查询create procedure sp_empname @E_name varchar(10) asselect a.emp_name,a.dept,b.tot_amtfrom employee a inner join sales bon a.emp_no=b.sale_idwhere a.emp_name like @E_namegoexec sp_empname '陈%'1、利用存储过程计算出’E0014’业务员的销售总金额。

create procedure sp_saletot @E_no char(5),@p_tot int output asselect @p_tot=sum(tot_amt)from saleswhere sale_id=@E_nogodeclare @tot_amt intexec sp_saletot E0014, @tot_amt outputselect @tot_amt四、实验内容与步骤1、利用存储过程,给employee表添加一条业务部门员工的信息。

2、利用存储过程从employee、sales、customer表的连接中返回所有业务员的姓名、客户姓名、销售金额。

3、利用存储过程查找“刘刚”的员工编号、订单编号、销售金额。

4、利用存储过程查找姓“李”并且职称为“职员”的员工的员工编号、订单编号、销售金额。

5、利用存储过程计算出订单编号为10003的订单的销售金额。

五、实验报告。

实验训练5:存储过程与函数的构建与使用

实验训练5:存储过程与函数的构建与使用

实验训练5:存储过程与函数的构建与使用一、存储过程与函数的概念存储过程和函数都是数据库中的可执行代码,可以被多次调用和重复使用。

存储过程是一组预定义的SQL语句集合,可以在数据库中定义和存储。

而函数是一个独立的代码块,它接收输入参数并返回一个值。

二、存储过程的构建与使用1. 创建存储过程在MySQL中,创建存储过程需要使用CREATE PROCEDURE语句。

例如:CREATE PROCEDURE myproc()BEGINSELECT * FROM mytable;END;这个例子创建了一个名为myproc的存储过程,它会查询mytable表中的所有数据。

2. 调用存储过程使用CALL语句可以调用已经创建好的存储过程。

例如:CALL myproc();这个语句会执行myproc存储过程中定义的SQL语句。

3. 存储过程参数我们可以给存储过程添加参数来使其更加灵活。

例如:CREATE PROCEDURE myproc(IN p1 INT, IN p2 VARCHAR(50)) BEGINSELECT * FROM mytable WHERE column1 = p1 AND column2 = p2;END;这个例子创建了一个带有两个输入参数p1和p2的存储过程,它会查询mytable表中column1等于p1并且column2等于p2的数据。

4. 存储过程变量除了参数之外,存储过程还可以使用变量来存储中间结果。

例如:CREATE PROCEDURE myproc(IN p1 INT)BEGINDECLARE v1 INT;SET v1 = p1 * 2;SELECT * FROM mytable WHERE column1 = v1;END;这个例子创建了一个带有一个输入参数p1和一个变量v1的存储过程,它会将p1乘以2并将结果存储在v1变量中,然后查询mytable表中column1等于v1的数据。

存储过程的创建与使用

存储过程的创建与使用

存储过程的创建与使⽤1.基本的存储过程(1).查询所有学员的信息if exists(select * from sysobjects where name='usp_getAllstudent')drop proc usp_getAllstudentgocreate procedure usp_getAllstudent--创建存储过程asselect * from studentgo--调⽤存储过程exec usp_getAllstudent2.带参数的存储过程(1).查询指定性别的学员信息if exists(select * from sysobjects where name='usp_getAllstudentBySex')drop proc usp_getAllstudentBySexgocreate procedure usp_getAllstudentBySex@sex char(2)--形参只是声明,不是定义,所以不需要declareasselect * from student where sex = @sexgo--调⽤存储过程exec usp_getAllstudentBySex '男'(2).查询指定性别和班级名称的学员信息if exists(select * from sysobjects where name='usp_getAllstudentByClassName')drop proc usp_getAllstudentByClassNamegocreate procedure usp_getAllstudentByClassName@sex char(2),@className nvarchar(50)asdeclare @ClassId int --科⽬的IDset @ClassId = (select classid from grade where classname =@className )select * from student where sex = @sex and ClassId=@ClassIdgo--调⽤存储过程,返回指定班级名称和性别信息exec usp_getAllstudentByClassName '男','⼀班'3.创建有默认值的存储过程(1).查询男性别和班级名称的学员信息if exists(select * from sysobjects where name='usp_getAllstudentByClassName')drop proc usp_getAllstudentByClassNamegocreate procedure usp_getAllstudentByClassName@sex char(2)='男',@className nvarchar(50)asdeclare @ClassId int --科⽬的IDset @ClassId = (select classid from grade where classname =@className )select * from student where sex = @sex and ClassId=@ClassIdgo--调⽤存储过程,返回指定班级名称和性别信息--参数传递顺序⼀致:第⼀个实参默认就是传递第⼀个形参。

实验6存储过程的应用-实验报告

实验6存储过程的应用-实验报告
3.用T-SQL语句创建存储过程:要求返回指定课程的平均成绩,其中指定课程号以存储过程的输入参数进行传递。代码及结果如下:
图三、返回指定课程的平均成绩成功
4.执行系统存储过程sp_help查看存储过程2的一般信息
代码及结果如下:
图四、查看存储过程2的一般信息
5.执行系统存储过程sp_helptext查看存储过程2的定义
实验内容:
本次实验之前的实验中我已经创建了mydb数据库,因此本次实验我不再提及mydb数据库的创建过程,接下来我们进入实验。
1.创建存储过程:查找1985年以后出生的学生的信息,代码及结果如下

图一、创建存储过程成功
2.用T-SQL语句在表department中创建插入的存储过程
代码及结果如下:
图二、创建插入的存储过程
1.创建存储过程:查找1985年以后出生的学生的信息
2.用T-SQL语句在表department中创建插入的存储过程
3.用T-SQL语句创建存储过程:要求返回指定课程的平均成绩,其中指定课程号以存储过程的输入参数进行传递。
4.执行系统存储过程sp_heቤተ መጻሕፍቲ ባይዱp查看存储过程2的一般信息
5.执行系统存储过程sp_helptext查看存储过程2的定义
《数据库系统应用设计》实验报告(六)
班级:08计科(2)班
姓名:杨进林
学号:08410902049
时间:2011-5-15
地点:综合实验楼二楼
实验成绩:优秀□良好□中□及格□不及格□
实验题目:1、存储过程的应用
实验目的:1、掌握创建存储过程的方法。
2、掌握存储过程的使用
实验要求:
在mydb数据库中:
代码及结果如下:
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

学院:信息工程学院
专业:计算机科学与技术姓名:蔡启林
学号:201013432
实验六存储过程创建与应用
一、实验目的
使学生理解存储过程的概念,掌握创建存储过程的使用、执行存储过程和查看、修改、删除存储过程的方法。

二、实验内容
(1)利用企业管理器创建存储过程student_grade,要求实现如下功能:查询“学生-课程”数据库中每个学生各门功课的成绩,其中包括每个学生的sno,sname,cname,grade。

(2)利用查询分析器创建名为proc_exp的存储过程,要求实现如下功能:从sc表中查询某一学生考试平均成绩。

(3)修改存储过程proc_exp,要求实现如下功能:输入学生学号,根据该学生所选课程的平均成绩显示提示信息,即如果平均成绩在60分以上,显示“此学生综合成绩合格,成绩为XX分”,否则显示“此学生总和成绩不合格,成绩为XX分”。

(4)创建名为proc_add的存储过程,要求实现如下功能:向sc表中添加学生成绩记录。

调用proc_add,向sc表中添加学生成绩记录。

(5)调用存储过程proc_exp,输入学生学号,显示学生综合成绩是否合格。

(6)删除刚刚创建的proc_add和proc_exp两个存储过程。

三、实验过程
要求个人填写(要求有文字描述和适当的图片辅助说明)
(1)
查询执行结果为:
(2)
查询执行结果为:
(3)
查询执行结果为:
(4)
查询执行结果为:
(5)
(6)
四、实验总结
要求个人填写(实验中发现的问题和解决的办法)
通过这次试验我更加深刻的理解了存储过程的概念,SQL Sever中的存储过程与其他编程语言中的函数类似,就像是函数的调用,包含执行各种数据库操作的语句,并且可以调用其他的存储过程,接受输入参数并以输出参数的格式向调用过程或批处理返回多个值,向调用过程或批处理返回状态值,以指明成功或失败,把实现一些功能的语句封装起来,需要使用的时候进行调用,效率很高使用起来方便。

创建存储过程有一定的设计规则,实验课中涉及的规则比较少,比较简单,有些复杂的规则还需在练习中遇到问题才能认识到。

存储过程的相关语句有创建create procedure,修改alter procedure,执行execute,删除drop procedure等等,大体的框架掌握了之后,主要就是写T-SQL语句以实现相应的功能。

在创建的时候要注意输入和输出参数,我在定义的时候忘记了out导致错误。

仔细检查改过错误后就解决了这个问题,这次实验让我了解了使用存储过程的好处,让我再以后的数据库学习中更好的熟练掌握这门课。

相关文档
最新文档