实验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数据库中:
代码及结果如下:

实验六 SQL Server中的存储过程及应用

实验六 SQL Server中的存储过程及应用

实验报告
2011 – 2012 学年第 2 学期任课老师:
课程名称数据库系统原理班级座号姓名
实验六 SQL Server中
实验时间
实验题目
的存储过程及应用
实验目的、要求
1)掌握存储过程的创建与执行。

2)熟悉存储过程与批处理的区别。

3)掌握带参数的存储过程的创建与执行。

实验设计内容
二、实验内容及步骤
1)在Sql Server中新建查询,粘贴“实验6.sql”并执行。

2)创建一个存储过程,要求查询所有学生的详细信息。

3)创建一个存储过程,要求查询每位学生所选课程的平均成绩
4)创建一个存储过程,要求查询每位学生所选课程的最高成绩
5)创建一个存储过程,要求查询每位学生所选课程的最高成绩以及所对应的课程名称。

6)创建一个存储过程,要求查询制定学号的学生详细信息。

7)创建一个存储过程,要求查询所选课程成绩不合格的学生详细信息。

8)创建一个存储过程,要求向XSQK表插入一条学生记录。

9)创建一个存储过程,要求能够实现输出制定学生所选课程的平均分、最高分和最低分。

10)创建一个存储过程,要求能够实现对输入的两个数求和,并将结果输出。

11)创建一个存储过程,要求能够实现将两个字符串连接成一个字符串,并将结果输出。

总结以及心得体会
通过这次实验,让我深刻了解了数据库的功能,觉得它功能非常的强大,掌握存储过程的创建与执行,熟悉存储过程与批处理的区别。

掌握带参数的存储过程的创建与执行.
指导老师评阅意见
指导老师:年月日
填写内容时,可把表格扩大。

实验的源程序代码(要有注释)附在表后。

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

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

实验训练5:存储过程与函数的构建与使用实验训练5:存储过程与函数的构建与使用引言在数据库开发中,存储过程和函数是非常重要的概念和工具。

它们可以帮助我们实现数据的处理和逻辑控制,并提高数据库的性能和安全性。

本文将深入探讨存储过程和函数的构建与使用,帮助读者更好地理解和应用这些技术。

一、存储过程的构建与使用1. 存储过程的定义存储过程是一组预编译的SQL语句,可以接受参数、执行复杂的逻辑和操作,并返回结果。

它类似于程序中的函数,可以在数据库中存储和重复使用。

2. 存储过程的创建创建存储过程可以使用SQL语句的CREATE PROCEDURE命令。

在创建存储过程时,我们可以指定参数的类型、传递方式和默认值,以及存储过程中的SQL语句。

3. 存储过程的优点存储过程具有以下几个优点:- 提高数据库性能:存储过程经过预编译和优化,可以减少网络传输开销和SQL语句解析时间。

- 提高数据安全性:通过存储过程可以实现数据的封装和权限控制,防止恶意操作和注入攻击。

- 提高代码复用性:存储过程可以在不同的场景中重复调用,避免重复编写相同的SQL语句。

- 简化开发过程:存储过程将业务逻辑封装在数据库中,减轻了应用程序的开发和维护工作。

4. 存储过程的使用场景存储过程适用于以下几种场景:- 执行复杂的查询和数据处理操作:存储过程可以通过使用临时表、游标、循环等技术,实现复杂数据操作和计算。

- 实现业务逻辑的封装和复用:存储过程可以将一系列SQL语句和逻辑封装成一个独立的单元,方便在不同的场景中调用和重用。

- 提供数据接口和服务:存储过程可以作为数据接口和服务,供其他应用程序和系统调用,实现数据的访问和操作。

二、函数的构建与使用1. 函数的定义函数是一个独立的逻辑单元,接受输入参数并返回一个值。

它可以在SQL语句中调用和使用,用于数据的计算和处理。

函数类似于存储过程,但主要用于计算和返回结果,而不是执行复杂的逻辑和操作。

2. 函数的创建创建函数可以使用SQL语句的CREATE FUNCTION命令。

实验六存储过程的设计与应用

实验六存储过程的设计与应用

实验六 存储过程的设计与应用实验1、[实验场景]:当学期末课程教学结束后,任课老师在考试后要将学生的成绩录入到“教学管理系统”中,在随后的日期中,任课教师还要经常查询自己任教课程班的学生成绩。

请以编码为“T080040401”的课程班为例,用存储过程实现任课教师的课程班成绩查询T-SQL 语句。

图一 查询课程班的成绩解决:1、创建存储过程[参考代码]:表一 创建存储过程CourseClassGradeQuery2、执行(保存)存储过程3、执行语句:EXEC CourseClassGradeQuery拓展练习:在上述存储过程中引入一个参数,用来给存储过程传递【课程班编码】,然后存储过程再根据传递来的【课程班编码】进行相关的学生成绩查询。

请写出创建带【课程班编码】参数的存储过程的T-SQL 语句。

实验2、[实验场景]:在某个班级新生记录添加的时候,学号不用手工输入,系统将统计出这个班级已有学生的最大学号,然后在其基础上做自动加1处理后插入到学生表中。

插入学生记录的流程如图二所示。

请以班级编码为“050802”的“05软件(2)班”为例,用存储过程实现学号自增的学生记录插入功能。

图二插入学生记录的流程图[参考代码]:CREATE PROCEDURE AutoGetStuID @ClassID CHAR(6),@NewStuID CHAR(8)OUTPUTASDECLARE @MaxStuID CHAR(8),@CharTwoStuID CHAR(2),@IntTwoStuID INTSET @MaxStuID =(SELECT MAX(StuID) FROM TB_Student WHERE ClassID=@ClassID)IF @MaxStuID IS NULLSET @NewStuID = @ClassID+'01'ELSEBEGINSET @CharTwoStuId = RTRIM(@MaxStuID,7,2)SET @IntTwoStuID = CONVERT(INT,@CharTwoStuID)+1SET @CharTwoStuID = CONVERT(CHAR,@IntTwoStuID)IF LEN(@CharTwoStuID) = 1SET @CharTwoStuID='0'+@CharTwoStuIDELSESET @NewStuID = @ClassID+@CharT woStuIDEND保存后,执行:DECLARE @GetedStuID CHAR(8)EXEC AutoGetStuID '050801',@GetedStuID OUTPUTSELECT @GetedStuID AS NewStuID结果如图三所示:图三获取学生最大学号结果实验3、[实验场景]:课程班成绩录入系统后,由于系统记录的是学生的分数,而有的课程班的成绩需要用“优秀、良好、中等、及格和不及格”五个等第进行显示。

实验6 大数据库实验——存储过程和触发器

实验6 大数据库实验——存储过程和触发器

实验6 存储过程和触发器一、实验目的1、加深和巩固对存储过程和触发器概念的理解。

2、掌握触发器的简单应用。

3、掌握存储过程的简单应用。

二、实验容一)存储过程:1. 创建一存储过程,求l+2+3+…+n,并打印结果。

CREATE PROCEDURE addresultASDECLARE n int=10,/*最后一个数*/i int=0,result int=0 /*结果*/BEGINWHILE(i<=n)BEGINSET result=result+iSET i=i+1ENDPRINT'1+2+3+...+n的结果是:'PRINT resultRETURN(result)ENDGO2.调用上面的addresult存储过程,打印l十2+3+…+10的结果。

EXEC addresult3. 修改上述存储过程为addresult1,使得n为输入参数,其具体值由用户调用此存储过程时指定。

CREATE PROCEDURE addresult1n int=10 /*最后一个数*/ASDECLARE i int=0,result int=0 /*结果*/BEGINWHILE(i<=n)BEGINSET result=result+iSET i=i+1ENDPRINT'1+2+3+...+n的结果是:'PRINT resultRETURN(result)ENDGO4. 调用上面修改后的addresult1存储过程,打印l+2+3+…+100的结果。

EXEC addresult1 1005.修改上述存储过程为addresult2,将n参数设定默认值为10,并改设sum为输出参数,让主程序能够接收计算结果。

CREATE PROCEDURE addresult2n int=10,/*最后一个数*/sum int out/*结果*/ASDECLARE i int=0BEGINset sum=0WHILE(i<=n)BEGINSET sum=sum+iSET i=i+1ENDENDGO6.调用上面修改后的addresult2存储过程,设置变量s接收计算l+2+3+…+10的结果。

实验6 游标、存储过程和触发器

实验6 游标、存储过程和触发器

实验六游标、存储过程与触发器
一、实验目的
掌握使用T-SQL实现游标、存储过程和触发器的创建,使用方法。

二、实验内容
在实验一、实验二创建的表中用T-SQL语句完成以下内容:
1.使用游标实现将及格的选课信息输出。

2.使用游标将SPJ表中的偶数行输出。

3.创建存储过程,查询赵永亮所修课程的课程信息,将课程号和课程名输出。

4.创建存储过程,统计指定学生修课的平均成绩和选课门数,将统计的结果用输出参数返回。

5.创建存储过程,在学生表Student中插入一条完整的元组。

6.创建存储过程,根据用户指定的供应商号删除SPJ表中相应的供货信息。

7.创建存储过程,将指定零件的重量增加指定的值。

8.用触发器实现约束:如果是北京的供应商,供应任何零件的数量不能少于300,如果少于则自动改为300。

9.在SC关系中增加新属性列Status,用来记录课程成绩的等级,0-59分为“不合格”,60-69为“合格”,70-89为“良好”,90以上为“优秀”。

要求status属性列的值由用户在插入、更新选课成绩时系统自动填写和更新。

6实验六 存储过程

6实验六  存储过程

实验六存储过程之阿布丰王创作一、实验目的(1)掌握T-SQL流控制语句。

(2)掌握创建存储过程的方法。

(3)掌握存储过程的执行方法。

(4)掌握存储过程的管理和维护。

二、实验内容1、创建简单存储过程(1)创建一个名为stu_pr的存储过程,该存储过程能查询出051班学生的所有资料,包含学生的基本信息、学生的选课信息(含未选课同学的信息)。

要求在创建存储过程前请判断该存储过程是否已创建,若已创建则先删除,并给出“已删除!”信息,否则就给出“不存在,可创建!”的信息。

if exists(select*from sysobjects where name='stu_pr'and type=' P')begindropprocedure stu_prprint'已删除!'endelseprint'不存在,可创建!'createprocedure stu_prasselectdistinct*from Studentsleftjoin SC on s.Sno=SC.Snoleftjoin Coursec on o=owhere Classno='051'执行:exec stu_pr2、创建带参数的存储过程(1)创建一个名为stu_proc1的存储过程,查询某系、某姓名的学生的学号、姓名、年龄,选修课程名、成绩。

系名和姓名在调用该存储过程时输入,其默认值分别为“%”与“林%”。

执行该存储过程,用多种参数加以测试。

if exists(select*from sysobjects where name='stu_proc1'and typ e='P')begindropprocedure stu_proc1print'已删除!'endelseprint'不存在,可创建!'createprocedure stu_proc1@sdept varchar(10)='%',@sname varchar(10)='林%'asselect Sname,s.Sno,YEAR(getdate())-YEAR(Birth)Age,Cname,Gradefrom Students,Coursec,SCwhere s.Sno=sc.Sno and o=oand s.Sname like@sname and s.Sdept like@sdept执行:①、exec stu_proc1②、exec stu_proc1@sdept='%',@sname='林%'(2)创建一个名为Student_sc的存储过程,可查询出某段学号的同学的学号、姓名、总成绩。

存储过程的创建和使用

存储过程的创建和使用

存储过程的创建和使用一、特点●存储过程包含一条或多条Transact-SQL语句。

●存储过程可以接受输入参数并可以返回输出值。

●一个存储过程可以调用另一个存储过程。

●存储过程会返回执行情况的状态代码给调用它的的程序。

二、优点●实现模块化编程,一个存储过程可以被多个用户共享和重用。

●存储过程有对数据库立即访问的的功能。

●使用存储过程可以加快程序的运行速度。

●使用存储过程可以减少网络流量。

存储过程存储在数据库内,有应用程序通过一个调用语句就可以执行它,不需要大量Transact-SQL语句传送到服务器端。

●使用存储过程可以提高数据库的安全性。

用户可以调用存储过程,实现对表中数据的有限操作,但可以不赋予其直接修改数据表的权限,这样就提高了表中数据的安全性。

三、创建方式●使用SQL Server 企业管理器创建存储过程。

(展开指定数据库→可编程性→存储过程(右键单击选择)→新建存储过程)●使用创建存储过程向导创建存储过程。

●使用Transact-SQL语句中的CREATE PROCEDURE命令创建存储过程。

(在“新建查询”中编辑)四、组成●所有输入参数以及传递个调用者的的输出参数。

●被执行的针对数据库的操作语句,包括调用其他存储过程的语句。

返回给调用者的状态值,以指明调用是成功还是失败。

五、使用Transact-SQL创建存储过程(1)注意事项:●不能将CREATE PROCEDURE语句与其他SQL 语句租和到单个批处理中。

●创建存储过程的权限默认属于数据库所有者,该所有者可以将此权限授予其他用户。

●存储过程是数据库对象,其名称必须遵守标识符规则。

●只能在当前数据库中创建存储过程。

(2)语法:CREATE PROC[EDURE] procedure_name[;number][{@parameter data_type}[VARYING] [=default] [OUTPUT]] [,…n]WITH{ RECOMPILE | ENCRYPTION | RECOMPILE,ENCRYPTION}][FOR REPLICATION]AS sql_statement [ …n ](3)代码意义:●procedure_name: 存储过程名。

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

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

实验六存储过程创建与应用班级 211 学号 201421119 姓名李梦苗一、实验目的使学生理解存储过程的概念,掌握创建存储过程的使用、执行存储过程和查看、修改、删除存储过程的方法。

二、实验内容(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中的存储过程与其他编程语言中的函数类似,就像是函数的调用,包含执行各种数据库操作的语句,并且可以调用其他的存储过程,接受输入参数并以输出参数的格式向调用过程或批处理返回多个值,向调用过程或批处理返回状态值,以指明成功或失败,把实现一些功能的语句封装起来,需要使用的时候进行调用,效率很高使用起来方便。

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

数据库《创建和使用存储过程》实验报告

数据库《创建和使用存储过程》实验报告

x x大学计算机与信息技术学院实验报告图1(2)在打开的SQL命令窗口中,系统给出了创建存储过程命令的模板,如图2所示。

图2在模板中可以输入创建存储过程的T-SQL语句,按照下面的代码建立存储过程的命令模板后,单击“执行”按钮,即可创建存储过程,如图3所示。

图3(3)在新建的getstudent存储过程可以通过以下代码来执行,执行结果如图4所示。

图42. 使用SQL命令窗口创建存储过程(1)打开SQL Server Management Studio,选择“对象资源管理器”中的“学生数据库”,然后用鼠标单击“新建查询”按钮,打开SQL命令窗口,在可编辑区输入如下代码,单击“执行”按钮即可创建存储过程,如图5所示。

图5(2)新建立的getstudent_all存储过程可以通过以下代码执行,执行结果同使用创建存储过程模板创建的存储过程。

创建一个不带参数的存储过程,从Course中选择所有“Grade>90”的记录,输入如下语句,单击“执行”,结果如图8-6所示。

图6创建一个带参数的存储过程,从Course中选择Grade介于65-95之间的记录,输入如下语句,单击“执行”,结果如图7所示。

图7创建与执行带输入、输出参数的存储过程,实现显示“Course”中给定学号的信息,并输出“Course”中该学号的学生所选课程中的最高分数和最低分数,具体步骤如下:1)单击Microsoft SQL Server Management Studio,选择“对象资源管理器”中的“数据定义”。

2)单击常用工具栏中的“新建查询”按钮,新建一个数据库引擎查询文档。

3)在数据库引擎文档中输入如下代码,单击“执行”按钮,即可创建名称为getstudent_3的存储过程,如图8所示。

图8(3)存储过程创建成功后,输入如下T-SQL语句,单击“执行”按钮,执行已经创建的存储过程getstudent_3,执行结果如图9所示。

  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导致错误。

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

相关文档
最新文档