实验七存储过程

实验七存储过程
实验七存储过程

实验七存储过程

实验7存储过程

1,实验要求和目的

1,掌握创建存储过程的基本方法

2。实验完成后写一份实验报告。要求:在实验报告的“实验源代码和结果”一节中填写T-SQL语句代码和执行结果

2,实验内容

1,根据要求创建存储过程:

(1)创建存储过程,用于执行后检索学生的基本信息(检索字段有:学号、姓名、系)

(2)创建一个存储过程,该过程可以在执行后检索数据库分数大于60分的所有学生的学号和姓名。

(3)创建一个存储过程,可以执行该过程来查询任何学生编号的学生姓名、性别、年龄和系。

(4)创建存储过程时,任何记录都可以在执行过程中插入到“学生基本信息表”(表名定制)中。

(5)创建一个可执行的存储过程以输出:参加任何课程的学生人数2。存储过程修改(使用ALTER关键字):

(1)修改问题(2)中的存储过程,修改后的存储过程可以检索数据库分数大于80分的所有男生的学生编号和姓名

(2)修改问题(3)中存储过程,修改后的存储过程可以更新学习

的任何学生的姓名(注意:update关键字用于更新表中的数据。具体格

式见教科书第25页的“3.3.2数据修改”。)

(3)本节中问题(2)的存储过程。修改后的存储过程可以更新任何课程中任何学生的分数。

实验七

河南工业大学实验报告 课程数据库技术基础实验名称实验7 院系中英国际学院专业班级软件1602 姓名姜棚学号201630910220 指导老师:程凤娟日期2017-11-21 1、目的与要求 (1)掌握存储过程的使用方法; (2)掌握触发器的使用方法; 2、实验准备 (1)了解存储过程的使用方法; (2)了解触发器的使用方法 (3)了解inserted逻辑表和deleted逻辑表的使用; (4)了解如何编写CRL存储过程与触发器。 3、实验内容 1)存储过程 (1)创建存储过程,使用Employees表中的员工人数来初始化一个局部变量,并调用这个存储过程。 执行该存储过程,并查看结果;

(2)创建存储过程,比较两个员工的实际收入,若前者比后者高就输出0,否则输出1。 执行该存储过程,并查看结果:

(3)创建添加职员记录的存储过程EmployeeAdd。 执行该存储过程: (4)创建一个带有OUTPUT游标参数的存储过程,在Employees表中声明并打开一个游标。

声明一个局部游标变量,执行上述存储过程,并将游标赋值给局部游标变量,然后通过该游标变量读取记录: (5)创建存储过程,使用游标确定一个员工的实际收入是否排在前三名。 结果为1表示是,结果为0表示否。 执行该存储过程,并查看结果:

思考与练习: ●创建存储过程,要求当一个员工的工作年份大于6年时将其转到经理办公室 工作。 ●创建存储过程,根据每个员工的学历将收入提高500元。 ●创建存储过程,使用游标计算本科及以上学历的员工在总员工人数所占的比

例。 ●使用命令方式修改存储过程的定义。 2)触发器 对于YGGL数据库,表Employees的DepartmentID列与表Departments的DepartmentID列应满足参照完整性规则,即: ●向Employees表添加记录时,该记录的“DepartmentID”字段值在 Departments表中应存在。 ●修改Departments表的DepartmentID字段值时,该字段在Employees表中 的对应值也应修改。

实验六 存储过程和触发器

实验六存储过程和触发器(2学时) 1.实验目的 (1)掌握通过SQL Server管理平台和Transact-SQL语句CREATE PROCEDURE创建存储过程的方法和步骤。 (2)掌握使用Transact-SQL语句EXECUTE执行存储过程的方法。 (3)掌握通过SQL Server管理平台和Transact-SQL语句CREATE TRIGGER创建触发器的方法和步骤。 (4)掌握引发触发器的方法。 (5)掌握事务、命名事务的创建方法,了解不同类型的事务的处理情况。 2.实验内容 (1)输入以下T-SQL代码,创建一个利用流控制语句的存储过程letters_print,该存储过程能够显示26个小写字母。 CREATE PROCEDURE letters_print AS DECLARE @count int SET @count=0 WHILE @count<26 BEGIN PRINT CHAR(ASCII('a')+ @count) SET @count=@count +1 END 使用EXECUTE命令执行letters_print存储过程。 (2)输入以下代码,创建存储过程stu_info,执行时通过输入姓名,可以查询该姓名对应的学生的各科成绩。 CREATE PROCEDURE stu_info @name varchar(40) AS SELECT a.no,name,cno,grade FROM Student a INNER JOIN grade b ON a.no= b.sno WHERE name= @name 使用EXECUTE命令执行存储过程stu_info,其参数值为“马东”。 如果存储过程stu_info执行时没有提供参数,要求能按默认值查询(设姓名为“刘卫平”),如何修改该过程的定义? (3)使用student_db数据库中的Student表、course表、grade表。 ①创建一个存储过程stu_grade,查询学号为0001的学生的姓名、课程名称、

数据库实验报告(7个实验完整附截图)

福建农林大学计算机与信息学院 实验报告 课程名称:数据库原理及应用 姓名: 系:计算机科学与技术 专业:计算机科学与技术 年级:2012 级 学号: 指导教师:陈长江 2014 年5月18 日

实验项目列表 序号实验项目名称成绩指导教师 1 实验一数据库的定义实验(验证性) 2 实验二数据库的建立和维护实验(验 证性) 3 实验三数据库的查询实验(验证性) 4 实验四数据库的视图操作实验(验证 性) 5 实验五触发器、存储过程操作实验 (综合性) 实验一:数据库的定义实验 一、实验目的: 1、理解MySQL Server 6.0 服务器的安装过程和方法; 2、要求学生熟练掌握和使用SQL、T-SQL、SQL Server Enterpriser Manager Server 创建数据库、表、索引和修改表结构,并学会使用SQL Server Query Analyzer,接收T-SQL 语句和进行结果分析。 二、实验环境: 硬件:PC机 软件:Windows操作系统、MySQL Server 6.0 和Navicat for MySQL 9.0

三、实验内容和原理: 1、安装MySQL以及相应的GUI工具 2、用SQL命令,建立学生-课程数据库基本表: 学生Student(学号Sno,姓名Sname,年龄Sage,性别Ssex,所在系Sdept); 课程Course(课程号Cno,课程名Cname,先行课Cpno,学分Ccredit); 选课SC(学号Sno,课程号Cno,成绩Grade); 要求: 1) 用SQL命令建库、建表和建立表间联系。 2) 选择合适的数据类型。 3) 定义必要的索引、列级约束和表级约束. 四、实验步骤: 1、运行Navicat for MySQL,然后进行数据库连接,进入到GUI界面; 2、利用图形界面建立基础表: student 表的信息: 字段名类型长度约束条件 Sno varchar9非空、主键 Sname varchar20 Ssex varchar2 Sage smallint 6 Sdept varchar20 course表的信息: 字段名类型长度约束条件 Cno varchar4非空、主键 Cname varchar40 Cpno varchar4与 course 表中 Cno 关联 Ccredit smallint 6

实验六 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 ) begin select 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) begin update stu set stuno=stuno+n; end // delimiter ; 5. delimiter // create procedure addstu( in sno int ) begin case sno when 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 //

6实验六 存储过程

实验六存储过程 一、实验目的 (1)掌握T-SQL流控制语句。 (2)掌握创建存储过程的方法。 (3)掌握存储过程的执行方法。 (4)掌握存储过程的管理和维护。 二、实验内容 1、创建简单存储过程 (1)创建一个名为stu_pr的存储过程,该存储过程能查询出051班学生的所有资料,包括学生的基本信息、学生的选课信息(含未选课同学的信息)。要求在创建存储过程前请判断该存储过程是否已创建,若已创建则先删除,并给出“已删除!”信息,否则就给出“不存在,可创建!”的信息。 if exists(select*from sysobjects where name='stu_pr'and type='P') begin drop procedure stu_pr print'已删除!' end else print'不存在,可创建!' create procedure stu_pr as select distinct*from Student s left join SC on s.Sno=SC.Sno left join Course c on https://www.360docs.net/doc/b34776411.html,o=https://www.360docs.net/doc/b34776411.html,o where Classno='051'

执行: exec stu_pr 2、创建带参数的存储过程 (1)创建一个名为stu_proc1的存储过程,查询某系、某姓名的学生的学号、姓名、年龄,选修课程名、成绩。系名和姓名在调用该存储过程时输入,其默认值分别为“%”与“林%”。执行该存储过程,用多种参数加以测试。 if exists(select*from sysobjects where name='stu_proc1'and type='P') begin drop procedure stu_proc1 print'已删除!' end else print'不存在,可创建!'

数据库实验报告六_存储过程

HUNAN UNIVERSITY 数据库 实验报告 学生姓名 学生学号 专业班级 指导老师 2017 年5月24日

SELECT COUNT(*)INTO more90 FROM sc WHERE cno = countcno AND grade >= 90; /*将结果存入新表sumScore中*/ create table sumScore( scorestage char(10), number smallint); insert into sumScore values('x<60', less60); insert into sumScore values('60<=x<70', b60a70); insert into sumScore values('70<=x<80', b70a80); insert into sumScore values('80<=x<90', b80a90); insert into sumScore values('x>=90', more90); END$$ call sumScore(); /*调用上述存储过程*/ 首先创建存储过程,然后再调用存储过程。结果如下: (上述结果图截自Navicat软件) 可以看到,在stuinfo中新建了一个基本表sumscore,表中内容是数学课程成绩的各分数段的人数。 2、统计任意一门课的平均成绩。 代码如下: DELIMITER $$ CREATE PROCEDURE `scoreAvg`() BEGIN declare curname char(40) default null; /*临时存放课程名*/ declare curcno char(4) default null; /*临时存放课程号*/ declare curavg float; /*临时存放平均成绩*/ declare mycursor cursor for /*定义游标*/ select cno, cname from course;

实验4创建和使用存储过程

实验4创建和使用存储过程 4.1 实验目的 (1)理解存储过程的功能和特点。 (2)学会使用Transact-SQL编写存储过程的方法。 (3)学会如何使用SSMS创建存储过程。 (4)理解可以使用存储过程来完成对数据库的操作。 4.2 实验内容 (1)创建带输入参数的存储过程。 (2)执行所创建的存储过程。 (3)删除所有新创建的存储过程。 4.3.1 创建带输入参数的存储过程 在查询命令窗口中输入创建存储过程的CREATE PROCEDURE语句。 这里创建一个带输入参数的存储过程Stu_Proc1,其中的输入参数用于接收课程号,默认值为c01,然后在SC表中查询该课成绩小于70的学生学号,接着在Student表中查找这些学生的基本信息,包括学号、姓名、性别和系信息, 4.3.2 执行所创建的存储过程 在查询分析器里运行存储过程,输出运行结果。 EXECUTE Stu_Proc1 'c01'

CREATE PROCEDURE Stu_Proc2 @dept char(20) AS select student.sno, sname, https://www.360docs.net/doc/b34776411.html,o.credit from student join sc on student.sno=sc.sno join course on https://www.360docs.net/doc/b34776411.html,o=https://www.360docs.net/doc/b34776411.html,o where student.sdept=@dept 4.3.3 删除新建的存储过程 在查询命令的窗口中输入DROP PROCEDURE语句和所有新创建的存储过程名。DROP PROCEDURE Stu_Proc1

4.3.4 查询学生的学号、姓名、修的课程号、课程名、课程学分,将学生所在系作为输入参数,执行此存储过程,并分别指定一些不同的输入参数值。 4.3.5 查询指定系的男生人数,其中系为输入参数,人数用输出参数返回。

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

实验七存储过程及应用 1.实验目的 1、理解存储过程的概念。 2、掌握存储过程的使用方法。 2.实验要求 1.建立如下的存储过程(基于前面实验建立的表和插入的数据,并为每个存储过程设计返回的状态值): (1)按要求设计完成如下功能的存储过程。 ①查询平均分数在x到y范围内的学生信息。 说明: 该存储过程有两个参数; 要求查询的学生信息包括学号、姓名、院系名称和平均分数。 ②更新操作,以学号、课程编号和考试成绩作参数更新指定学生和课程的考试成绩,并返回该学生的平均成绩。 (2)自行再分别设计一个完成查询和完成操作功能的存储过程(在实验报告中要准确描述功能需求)。 (3)在客户端以存储过程和输入SQL语句的方式分别执行相同的查询或操作,比较使用和不使用存储过程的区别。 3、实验过程 (1)①查询平均分数在x到y范围内的学生信息 create procedure cc711@x smallint,@y smallint as select学生.学号,学生.姓名,院系.名称,学生.平均成绩 from学生join院系on学生.院系=院系.编号 where学生.平均成绩between@x and@y EXECUTE cc71160,90

②更新操作,以学号、课程编号和考试成绩作参数更新指定学生和课程的考试成绩,并返回该学生的平均成绩 create procedure mcc712@xh nchar(8),@kcbh nchar(8),@cj int as update选课set成绩=@cj where学号=@xh and课程编号=@kcbh declare@pjcj int select@pjcj=AVG(成绩)from选课where学号=@xh return@pjcj declare@avg int execute@avg=mcc7122,5,98 print'更新后平均成绩:'+str(@avg,6)

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

学院:信息工程学院 专业:计算机科学与技术姓名:蔡启林 学号: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导致错误。仔细检查改过错误后就解决了这个问题,这次实验让我了解了使用存储过程的好处,让我再以后的数据库学习中更好的熟练掌握这门课。

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

实验6 存储过程与触发器 一、实验目的 1、加深与巩固对存储过程与触发器概念的理解。 2、掌握触发器的简单应用。 3、掌握存储过程的简单应用。 二、实验内容 一)存储过程: 1、创建一存储过程,求l+2+3+…+n,并打印结果。 CREATE PROCEDURE addresult AS DECLARE @n int=10,/*最后一个数*/ @i int=0, @result int=0 /*结果*/ BEGIN WHILE(@i<=@n) BEGIN SET @result=@result+@i SET @i=@i+1 END PRINT'1+2+3+、、、+n的结果就是:' PRINT @result RETURN(@result) END GO 2.调用上面的addresult存储过程,打印l十2+3+…+10的结果。EXEC addresult

3、修改上述存储过程为addresult1,使得@n为输入参数,其具体值由用户调用此存储过程时指定。 CREATE PROCEDURE addresult1 @n int=10 /*最后一个数*/ AS DECLARE @i int=0, @result int=0 /*结果*/ BEGIN WHILE(@i<=@n) BEGIN SET @result=@result+@i SET @i=@i+1 END PRINT'1+2+3+、、、+n的结果就是:' PRINT @result RETURN(@result) END GO 4、调用上面修改后的addresult1存储过程,打印l+2+3+…+100的结果。 EXEC addresult1 100 5.修改上述存储过程为addresult2,将@n参数设定默认值为10,并改设@sum为输出参数,让主程序能够接收计算结果。

SQL实验七:存储过程和触发器的使用

( 二 〇 一 五 年 五 月 《数据库原理及应用》实验报告 学校代码: 10128 学 号: 201220905048 题 目:存储过程和触发器的使用 学生姓名:孙跃 学 院:理学院 系 别:数学系 专 业:信息与计算科学 班 级:信计12-2 任课教师:侯睿

一、实验目的 1.掌握存储过程的使用方法; 2.掌握触发器的使用方法。 二、实验内容 1.存储过程; 2.触发器。 三、实验程序及结果 1、存储过程 (1)创建存储过程,使用Employees表中的员工人数来初始化一个局部变量,并调用这个存储过程。 USE YGGL GO CREATE PROCEDURE TEST @NUMBER1 int OUTPUT AS BEGIN DECLARE @NUMBER2 int SET @NUMBER2=(SELECT COUNT(*)FROM Employees) SET @NUMBER1=@NUMBER2 END GO USE YGGL GO DECLARE @num int EXEC TEST @num OUTPUT SELECT @num (2)创建存储过程,比较两个员工的实际收入,若前者比后者高就输出0,否则输出1。USE YGGL GO CREATE PROCEDURE COMPA @ID1 CHAR(6),@ID2 CHAR(6),@BJ INT OUTPUT AS BEGIN DECLARE @SR1 FLOAT,@SR2 FLOAT SELECT @SR1=InCome-OutCome FROM Salary

EmployeeID=@ID1 SELECT @SR2=InCome-OutCome FROM Salary WHERE EmployeeID=@ID2 IF @ID1>@ID2 SET @BJ=0 ELSE SET @BJ=1 END USE YGGL GO DECLARE @BJ int EXEC COMPA '000001','108991',@BJ OUTPUT SELECT @BJ (3)创建添加职员记录的存储过程EmployeeADD。 USE YGGL GO CREATE PROCEDURE EmployeeAdd ( @employeeid char(6), @name char(10), @education char(4), @birthday datetime, @woekyear tinyint, @sex bit, @address char(40), @phonenumber char(12), @departmentID char(3) ) AS BEGIN INSERT INTO Employees VALUES(@employeeid,@name,@education,@birthday, @woekyear, @sex,@address,@phonenumber,@departmentID) END RETURN GO

实验六 存储过程和触发器

实验六存储过程和触发器 电子信息科学与技术罗滨志(120802010051) 一、实验目的 (1)理解存储过程和触发器的功能和特点; (2)学会使用Transact-SQL编写存储过程和触发器的方法; (3)学会如何使用管理平台创建存储过程和触发器; (4)掌握存储过程的创建、执行与删除; (5)掌握触发器的创建、修改和删除操作; (6)理解可以使用存储过程和触发器来维护数据完整性。 二、实验准备 (1)了解存储过程的基本概念和类型。 (2)了解创建存储过程的Transact —SQL语句的基本语法。 (3)了解查看、执行、修改和删除存储过程的基本语法。 (4)了解触发器的基本概念和类型。 (5)了解创建触发器的Transact —SQL语句基本用法。 (6)了解查看、修改和删除触发器的Transact —SQL语句的用法。 三、实验内容和步骤 1.创建存储过程stu_info,执行时通过输入姓名,可以查询该姓名对应的学生的各科成绩。SQL语句 create proc stu_info@sname varchar(20) as select grade from sc,student where student.sno=sc.sno and sname=@sname go 如图所示:

2. 使用studentsdb数据库中的student表,course表、sc表。 (1)创建一个存储过程stu_score,查询学号为2012001的学生的姓名,课程名称,分数。SQL语句 create proc stu_score@sno varchar(20) as select sname,cname,grade from sc,student,course where student.sno=sc.sno and https://www.360docs.net/doc/b34776411.html,o=https://www.360docs.net/doc/b34776411.html,o and student.sno=@sno go 如图所示:

实验七创建和操作数据库对象

实验报告 课程:数据库原理与实用技术实验 实验7 创建和操作数据库对象 实验7-1 存储过程 1、使用不带参数的存储过程 (1)创建一个存储过程my_proc,查询“学生表”中所有计算机系女生的学号、姓名、性别、年龄和所在院系 create proc my_proc as select学号,姓名,性别,年龄,所在院系from学生表 where所在院系='计算机'and性别='女' (2)执行存储过程 (3)修改存储过程,使其能够查询计算机系女生的所有基本信息 alter proc my_proc as select*from学生表 where所在院系='计算机'and性别='女' 2、带输入参数的存储过程 (1)创建一个存储过程my_procsex,使其能够查询“学生表”中男学生或女学生的学号、姓名、性别、年龄和所在院系 create proc my_procsex @sex char(2) as select学号,姓名,性别,年龄,所在院系from学生表where性别=@sex (2)执行存储过程 exec my_procsex @sex='男' 3、带输入/输出参数的存储过程 (1)创建一个存储过程my_procage,使其能够根据学生姓名,查询学生年龄。(考虑当学生不存在时给出提示信息) create proc my_procage @name char(10),@age int OUTPUT as if not exists(select*from学生表where姓名=@name) return-155 select年龄from学生表where姓名=@name (2)执行存储过程 declare @once_age int, @status int exec @status=my_procage @name='陈忠刚', @age=@once_age output if @status=-155 print'对不起,您输入的名字查找失败!' print'the output data is:'+convert(varchar(10),@once_age)

实验六 存储过程和触发器

实验六存储过程与触发器 一、目的与要求 1.掌握编写数据库存储过程的方法。 2.掌握建立数据库触发器的方法,通过实验观察触发器的作用与触发条件设置 等相关操作。 二、实验准备 1.了解编写存储过程与调用的T-SQL语法; 2.了解触发器的作用; 3.了解编写触发器的T-SQL语法。 三、实验内容 (一)存储过程 在studentdb数据库中建立存储过程getPractice,查询指定院系(名称)(作为存储过程的输入参数)中参与“实践”课程学习的所有学生学号、姓名、所学课程编号与课程名称,若院系不存在,返回提示信息。 提示:D_Info表中存储了院系代码D_ID,而St_Info表中学号字段St_ID的前两位与之对应,则D_Info表与St_Info表之间的联系通过这两个字段的运算构成连接条件。 1.分别执行存储过程getPractice,查询“法学院”与“材料科学与工程学院” 的学生中参与“实践”课程的所有学生学号、姓名、所学课程编号与课程名称。 create procedure getPractice @D_Name varchar(30) output as begin if not exists (select * from D_Info where D_Name= @D_Name ) print '对不起,该院系不存在' else select st_info、St_ID,C_Info、C_No,C_Name from s_c_info inner join st_info on st_info、St_ID=s_c_info、st_id inner join C_Info on s_c_info、c_no=C_Info、C_No where st_info、St_ID in ( select St_ID from st_info join D_Info on D_Info、D_ID =left(st_info、St_ID,2) where C_Info、C_Type='实践' and D_Info、D_Name= @D_Name ) end go

实验7 数据库编程

实验7 数据库编程 1.用户状态(userstate)表 字段数据类型说明 usid int primary key userstate varchar(20) not null description varchar(250) 2.用户(user)表 字段数据类型说明 uid int primay key name varchar(20) not null sex bit 0-female,1-male,not null password varchar(8) not null state int foreign key birthday出生日期datetime 3.书目类别(category)表 字段数据类型说明 cid int primary key category varchar(20) not null description varchar(250) 4.书目(book)表 字段数据类型说明 bid int primay key title varchar(50) not null author varchar(50) not null press varchar(8) not null price float not null category int foreign key stock int not null 5.订单状态(orderstate)表 字段数据类型说明 osid int primary key orderstate varchar(20) not null description varchar(250) 6.订单(order)表 字段数据类型说明 oid int primary key user int foreign key state int foreign key payment总付款float默认值为0

实验六管理存储过程11页word

实验六存储过程与触发器一、存储过程 【创建存储过程】: CREATE PROCEDURE [OWNER].[PROCEDURE NAME] AS 如:Use pubs Go Create procedure author_information As select au_lname,au_fname,title,pub_name from authors a join titleauthor ta on a.au_id=ta.au_id join titles t on t.title_id=ta.title_id join publishers p on t.pub_id=p.pub_id Go 【管理存储过程】: ?可以使用sp_helptext命令查看创建存储过程的文本信息。 Use pubs Go Sp_helptext author_information

Go ?可以用sp_help查看存储过程的一般信息。 Use pubs Go Sp_help author_information Go ?可以使用系统存储过程sp_rename修改存储过程的名字。 Use pubs Go Sp_rename author_information ,authors_information Go ?也可以使用企业管理浏览存储过程的信息,具体方法是: ?从树型结构上选中存储过程所在的数据库节点,展开该节点; ?选中数据库节点下的〖存储过程〗节点,则右边的列表列出了数据库中目前所 有的存储过程; ?选中存储过程,右击,执行〖属性〗命令, 则系统将弹出如图所示对话框。 ?可以在对话框中修改存储过程内容,并保 存修改。 ?如果想知道某个表被存储过程引用的情 况,可以使用sp_depends, Sp_depends authors

数据库实验七:存储过程及应用

数据库实验七:存储过程及应用 一、实验目的与要求: 1.实验目的 1.理解存储过程的概念。 2.掌握存储过程的使用方法。 2.实验要求 1.建立如下的存储过程(基于前面实验建立的表和插入的数据,并为每个存储过程设计返回的状态值): (1)按要求设计完成如下功能的存储过程。 ①查询平均分数在x到y范围内的学生信息。 说明: ●该存储过程有两个参数; ●要求查询的学生信息包括学号、姓名、院系名称和平均分数。 ②更新操作,以学号、课程编号和考试成绩作参数更新指定学生和课程的考 试成绩,并返回该学生的平均成绩。 ③更新操作,以学号、课程编号和考试成绩作参数更新指定学生和课程的考 试成绩,并返回该学生的平均成绩。 (2)自行再分别设计一个完成查询和完成操作功能的存储过程(在实验报告中要准确描述功能需求)。 (3)在客户端以存储过程和输入SQL语句的方式分别执行相同的查询或操作,比较使用和不使用存储过程的区别。 二、实验内容 1、实验原理 1.创建存储过程的SQL语句的一般格式是: CREATE PROC[edure] [schema_name].procedure-name [; number ] [@parameter data-type [VARYING] [= default ][OUT | OUTPUT],…] AS sql-statement 2.执行存储过程的语句是: [EXECute]

[@<返回状态码> =] <存储过程名> [[@<参数>=]{<值>|@<变量>}…] 或 EXECUTE [@return_status=] [schema_name].procedure-name [; number ] [@parameter =]{value | variable [ OUTPUT]}[,…n] 2、实验步骤与结果 (1)调出SQL Server2005软件的用户界面,进入SQL Server Management Studio。 (2)输入自己编好的程序。 (3)检查已输入的程序正确与否。 (4)运行程序,并分析运行结果是否合理和正确。在运行时要注意当输入不同的数据时所得到的结果是否正确。 (5)输出程序清单和运行结果。 实验程序: create procedure Stu @minmark smallint,@maxmark smallint AS select学生.学号,学生.姓名,院系.名称,平均成绩 from学生join院系 on学生.院系=院系.编号 where平均成绩>=@minmark and平均成绩<=@maxmark execute Stu80,100

实验六存储过程设计

嘉应学院计算机学院 2012年 12月12日 一、实验目的 通过实验掌握SQL SERVER存储过程的基本设计方法。 二、实验原理 存储过程是保存起来的可以接受和返回用户提供的参数的 Transact-SQL 语句的集合,它被编译并存储为一个单一的数据库对象,可用存储过程实现批处理。 可以创建一个过程供永久使用,或在一个会话中临时使用(局部临时过程),或在所有会话中临时使用(全局临时过程)。 游标(Cursor)它使用户可逐行访问由数据库返回的结果集。使用游标(cursor)的一个主要的原因就是把集合操作转换成单个记录处理方式。基本语法: create procedure 存储过程名 (参数表 ) as t_sql语句的集合 t_sql语句除SQL语句外,还可包括声明变量,流控制语句及游标等。 (注意:t_sql语句在不同的数据库系统中,语法不同)

三、实验环境 操作系统:Windows Server 2003 、Windows 7 编译环境:SQL Server Enterprise Manager 数据库管理系统:Microsoft SQL Server 2005 四、实验步骤及内容 1. 了解T_SQL语法 (1)变量 A.局部变量 例如:declare @v_sno nvarchar(20), @v_grade float /* 声明了两个局部变量 */ B.全局变量 如:@@error, @@fetch_status C.表变量 声明表类型变量的语句将该变量初始化为一个具有指定结构的空表。 例如: declare @Mytab table (id int primary key, books varchar(15) ) insert @Mytab values(1,'9901') insert @Mytab values(2,'9902')

实验10 存储过程

实验10 存储过程 1.实验目的 (1)掌握使用SQL Server管理平台和Transact-SQL语句创建存储过程、执行存储过程、修改存储过程、删除存储过程的用法。 (2)理解使用SQL Server管理平台和Transact-SQL语句查看存储过程定义、重命名存储过程的用法。 2.实验内容及步骤 请先附加studentsdb数据库,然后完成以下实验。 (1)CREATE PROCEDURE st_g AS BEGIN SELECT x.学号,x.姓名,y.分数 FROM student_info x ,grade y Where x.学号=y.学号 END 该程序完成的功能是创建一个存储过程,存储过程的功能是对student_info和grade表进行查询,然后输出学号,姓名和分数信息。 (2)设计一个存储过程proc_grade完成这样的功能:查询grade表中课程编号为’k002’的学号、分数信息,并使存储过程不能使用sp_helptext 查看(即加密),请编写程序实现。 答:create procedure proc_grade with encryption as select学号,分数 from grade where课程编号='k002' --执行存储过程,进行验证 exec proc_grade (3)修改存储过程proc_grade,查询grade表中课程编号为’k001’的学号、 分数信息,去掉proc_grade加密性,使其在运行时重新编译。 答:alter procedure proc_grade

with recompile as select学号,分数 from grade where课程编号='k001' --执行存储过程,进行验证 exec proc_grade (4)在student_info 表中增加一列名为“手机号”,数据类型char(11)。 设计一个存储过程proc_tel,查询student_info表中末尾数字为5的手 机号码。 答: craeate table student_info add手机号char(11) go create procedure proc_tel as select手机号from student_info where手机号like'%5' --执行存储过程,进行验证 exec proc_tel (5)设计一个存储过程proc_avg,输出grade表中每个学生的平均成绩。答:create procedure proc_avg as select学号,avg(分数)as平均成绩 from grade group by学号 --执行存储过程,进行验证 exec proc_avg (6)设计一个存储过程,用于修改指定学生(参数@sid char(4))指定课程(参数为@cid char(4))的分数(@score decimal(3,1)),编写并调用该存储过程,修改学号’0002’的学生的修读课程‘K003’的成绩改为96。编写并调用存储过程。 答:create procedure proc_modifyscore @sid char(4), @cid char(4), @score decimal(3,1)

相关文档
最新文档