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

合集下载

实验五 存储过程

实验五 存储过程

实验五存储过程的创建与调用一.实验目的:了解存储过程的概念和作用,掌握创建存储过程的方法,为后继学习作准备。

二.实验属性:设计性。

三.实验仪器设备及器材:装有.NET和SQL Server的电脑。

四.实验要求程序的主界面图1.11、利用存储过程,给student表添加一条学生信息。

建立存储过程stu_insertUSE[sheng]GOSET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOALTER PROCEDURE[dbo].[stu_insert]@Sno char(10)= 0,@Sname char(10)= 0,@Ssex char(10)= 0,@Sage smallint= 0,@Sdept char(10)=0ASBEGINSET NOCOUNT ON;insertinto Studentvalues(@Sno,@Sname,@Ssex,@Sage,@Sdept)END在添加Button上添加时间处理程序//SqlConnection sqlconn = new SqlConnection(conn);string sno,sname,ssex,sage,sdept;sno=textBox1.Text.ToString();sname=textBox2.Text.ToString();ssex=textBox3.Text.ToString();sage=textBox4.Text.ToString();sdept=textBox5.Text.ToString();SqlCommand cmd = new SqlCommand();cmd.Connection = conn;mandText = "stu_insert";mandType = CommandType.StoredProcedure;IDataParameter[] parameters = {new SqlParameter("@Sno", SqlDbType.Char,4),new SqlParameter("@Sname", SqlDbType.Char,4) ,new SqlParameter("@Ssex", SqlDbType.Char,10) ,new SqlParameter("@Sage", SqlDbType.Int,10) ,new SqlParameter("@Sdept", SqlDbType.Char,15) ,};conn.Open();cmd.Parameters.Add("@Sno", SqlDbType.VarChar).Value = sno;cmd.Parameters.Add("@Sname", SqlDbType.VarChar).Value = sname; cmd.Parameters.Add("@Ssex", SqlDbType.VarChar).Value = ssex; cmd.Parameters.Add("@Sage", SqlDbType.VarChar).Value = sage; cmd.Parameters.Add("@Sdept", SqlDbType.VarChar).Value = sdept; cmd.ExecuteNonQuery().ToString();conn.Close();执行结果图1.22、利用存储过程从student、course、sc表的连接中返回所有学生的学号、姓名、所选课程及成绩。

存储过程和触发器(数据库实验5)

存储过程和触发器(数据库实验5)

数据库基础与实践实验报告实验五存储过程和触发器班级:惠普测试142学号:**********姓名:***日期:2016-11-141 实验目的:1)掌握SQL进行存储过程创建和调用的方法;2)掌握SQL进行触发器定义的方法,理解触发器的工作原理;3)掌握触发器禁用和重新启用的方法。

2 实验平台:操作系统:Windows xp。

实验环境:SQL Server 2000以上版本。

3 实验内容与步骤利用实验一创建的sch_id数据库完成下列实验内容。

1.创建存储过程JSXX_PROC,调用该存储过程时可显示各任课教师姓名及其所教课程名称。

存储过程定义代码:CREATE PROCEDURE JSXX_PROCASSELECT tn 教师姓名,cn 所教课程FROM T,TC,C WHERE T.tno=TC.tno AND o=o存储过程执行语句与执行结果截图:EXECUTE JSXX_PROC2.创建存储过程XM_PROC,该存储过程可根据输入参数(学生姓名)查询并显示该学生的学号、所学课程名称和成绩;如果没有该姓名学生,则提示“无该姓名的同学”。

存储过程定义代码:CREATE PROCEDURE XM_PROC @sname VARCHAR(100)ASBEGINIF EXISTS(SELECT NULL FROM S WHERE sn=@sname)SELECT S.sno 学号,cn 课程,score 成绩FROM S,SC,C WHERE o=o AND SC.sno=S.sno ANDS.sn=@snameELSEPRINT'无该姓名的同学。

'END运行截图:3.创建存储过程XBNL_PROC,该存储过程可根据输入参数(专业名词,默认值为计算机专业),统计并显示该专业各年龄段男、女生人数。

如果没有该专业,则显示“无此专业”。

存储过程定义代码:CREATE PROCEDURE XBNL_PROC@departName VARCHAR(30)='计算机',@begin INT,@end INTASDECLARE @numOfBoys INTDECLARE @numOfGirls INTDECLARE @d# VARCHAR(3)DECLARE @result VARCHAR(50)BEGINSELECT @d# = dno FROM D WHERE dn=@departNameIF @d# IS NOT NULLBEGINSELECT @numOfBoys =COUNT(sno)FROM S WHERE age BETWEEN @begin AND @end AND dno=@d# AND sex='男'SELECT@numOfGirls =COUNT(sno)FROM S WHERE age BETWEEN@begin AND@end AND dno=@d# AND sex='女'SET @result = @departName+'专业年龄在'+CAST(@begin AS VARCHAR(3))+'-'+CAST(@end AS VARCHAR(3))+'之间的男生有'+CAST(@numOfBoys AS VARCHAR(3))+'人,'+'女生有'+CAST(@numOfGirls AS VARCHAR(3))+'人'ENDELSESET @result='无此专业。

实验五 触发器及存储过程的使用

实验五 触发器及存储过程的使用

实验五触发器与存储过程
【实验目的】:①掌握触发器的使用
②掌握存储过程的使用
【实验内容】:相关命令写在作业本上。

1、建立银行业务数据库bankdb,其中,帐户信息表(bank)存放帐户的信息,交易信息表(transInfo)存放每次的交易信息。

(1)当向交易信息表(transInfo)中插入一条交易信息时,自动更新对应帐户的余额。

(2)当删除交易信息表时,要求自动备份被删除的数据到表backupTable中。

(3)跟踪用户的交易,交易金额超过20000元,则取消交易,并给出错误提示。

2、在学生成绩数据库中,利用存储过程,查询每门考试的平均分,若平均分大于85分,显示“优秀”,否则显示“较差”,并查询这门课中未通过考试的学生名单。

3、有程序员工资表prowage(id int,panme char(10),wage int),其中id是程
wage是工资。

创建一个存储过程,对程序员的工资进行分析,如果有百分之五十的人薪水不到2000,给所有人加薪,每次加100,再进行分析,直到有一半以上的人大于2000元为止。

存储过程执行完后,最终加了多少钱?每个人的工资为多少?
思考:如何修改上题的命令创建存储过程,要求查询程序员平均工资在4500元,如果不到,则每个程序员每次加200元,直到所有程序员平均工资达到4500元为止。

【实验答案】:1、(1)命令为:
(2)命令为:
(3)命令为:
2、命令为:
3、命令为:。

第5章 实验

第5章 实验

第5章实验
set serveroutput on;
1.存储过程(in参数)
⏹创建一个带输入参数的存储过程:根据给定的部门号,输出该部门的所有员工姓名。

⏹调用此存储过程:输出30部门的员工姓名。

2.存储过程(in,out参数)
⏹创建一个带输入与输出参数的存储过程:根据给定的职员号,返回该职员的姓名与部门名。

⏹调用此存储过程:并输出2001职员的员工姓名与部门名。

3.存储过程
⏹创建存储过程:根据给定的员工编号,删除该员工的信息。

若该职员不存在,则触发自定义异常,异常触发时,输出“不存在该员工”。

⏹调用此存储过程:删除编号5002的雇员信息。

(运行两次看结果)
4.存储函数
⏹创建一个存储函数:根据给定的学号,返回该学生的总成绩。

⏹调用此存储函数:输出“05880102”学生的总成绩。

5.存储函数
⏹创建一个存储函数:根据给定的系别名称,返回该系别的学生总人数。

⏹调用此存储函数:输出“计算机系”学生的总人数。

6.存储函数
⏹创建一个存储函数:实现随机输入学生学号,返回该学生的详细信息。

⏹调用此存储函数:输出学号为‘05880101’的详细信息。

实验训练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、了解存储过程的基本概念和类型。

2、了解创建存储过程的T-SQL语句的基本语法。

3、了解查看、执行、修改和删除存储过程的T-SQL命令的用法。

4、了解触发器的基本概念和类型。

5、了解创建触发器的T-SQL语句的基本语法。

6、了解查看、修改和删除存储过程的T-SQL命令的用法。

【实验内容】内容一:存储过程的使用一、数据需求分析存储过程是一种数据库对象,为了实现某个特定任务,将一组预编译的SQL语句以一个存储单元的形式存储在服务器上,供用户调用,自动完成需要预先执行的任务。

存储过程在第一次执行时进行编译,然后将编译好的代码保存在高速缓存中便于以后调用,提高了代码的执行效率。

二、内容要点分析1、SQL SERVER支持五种类型的存储过程:系统存储过程、本地存储过程、临时存储过程、远程存储过程和扩展存储过程。

其中,系统存储过程是由系统提供的存储过程,可以作为命令执行各种操作。

系统存储过程定义在系统数据库master中,其前缀是sp_。

本地存储过程是指在用户数据库中创建的存储过程,这种存储过程完成特定数据库操作任务,不能以sp_为前缀。

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

3、创建存储过程时,应指定所有输入参数和向调用过程或批处理返回的输出参数、执行数据库操作的编程语句和返回至调用过程或批处理以表明成功或失败的状态值。

4、创建存储过程的T-SQL语句CREATE PROC[EDURE] 存储过程名称[{ @参数名称数据类型 }] [,…n][WITH{ RECOMPILE|ENCRYPTION }]ASSQL语句序列说明:(1)RECOMPILE表明每次运行该过程时,将其重新编译。

(2)ENCRYPTION表示 SQL SERVER 加密SYSCOMMENTS表中包含CREATE PROCEDURE语句文本的条目。

注:必须将CREATE PROCEDURE语句放在单个批处理中。

5 实验五 创建存储过程和触发器

5 实验五 创建存储过程和触发器

实验五创建存储过程和触发器
一、实验目的
1.通过对常用系统存储过程的使用,了解存储过程的类型;通过创建和执行存储过程,了解存储过程的基本概念,掌握使用企业管理器及查询分析器执行T-SQL语句创建存储过程。

2.通过创建触发器,了解触发器的基本概念,理解触发器的功能,掌握使用企业管理器及查询分析器执行T-SQL语句创建触发器。

二、实验要求
1.实验前做好上机实验的准备,针对实验内容,认真复习与本次实验有关的知识,完成实验内容的预习准备工作;
2.能认真独立完成实验内容;
3.实验后做好实验总结,根据实验情况完成总结报告。

三、实验学时
2学时
四、实验内容
1、使用sp_helptext查看byroyalty存储过程的文本,该存储过程在数据库pubs中。

2、在实验二创建的factory数据库中执行以下操作:
(1)创建一个为worker表添加职工记录的存储过程addworker。

执行并验证存储过程的正确性。

最后删除该存储过程。

(2)在depart表上创建一个触发器depart_update,当更改部门号时同步更改worker 表中对应的部门号。

执行并验证触发器的正确性。

最后删除该触发器。

(3)在worker表上创建一个触发器worker_delete,当删除职工记录时同步删除salary表中对应职工的工资记录。

执行并验证触发器的正确性。

最后删除该触发器。

数据库实验报告:实验五

数据库实验报告:实验五

数据库实验报告:实验五一、实验目的本次数据库实验五的主要目的是深入了解和掌握数据库的高级操作,包括存储过程的创建与使用、视图的定义和应用、以及事务处理的原理和实践。

通过这些实验内容,提高我们对数据库系统的综合运用能力,为解决实际的数据库管理问题打下坚实的基础。

二、实验环境本次实验使用的数据库管理系统是 MySQL 80,开发工具为 Navicat Premium 12。

操作系统为 Windows 10 专业版。

三、实验内容及步骤(一)存储过程的创建与使用1、创建一个名为`get_student_info` 的存储过程,用于根据学生学号查询学生的基本信息(包括学号、姓名、年龄、性别和专业)。

```sqlDELIMITER //CREATE PROCEDURE get_student_info(IN student_id INT)BEGINSELECT FROM students WHERE student_id = student_id;END //DELIMITER ;```2、调用上述存储过程,查询学号为 1001 的学生信息。

```sqlCALL get_student_info(1001);```(二)视图的定义和应用1、创建一个名为`student_grade_view` 的视图,用于显示学生的学号、姓名和平均成绩。

```sqlCREATE VIEW student_grade_view ASSELECT sstudent_id, sname, AVG(ggrade) AS average_gradeFROM students sJOIN grades g ON sstudent_id = gstudent_idGROUP BY sstudent_id, sname;```2、查询上述视图,获取所有学生的平均成绩信息。

```sqlSELECT FROM student_grade_view;```(三)事务处理1、开启一个事务,向学生表中插入一条新的学生记录(学号:1005,姓名:_____,年龄:20,性别:男,专业:计算机科学)。

实验5:存储过程、触发器和视图

实验5:存储过程、触发器和视图

实验5:存储过程、触发器和视图第五周实验可编程对象(视图、存储过程和触发器)一.实验目的1.了解视图、存储过程和触发器的基本概念和使用方法。

2.学会用两种方法创建和维护视图、存储过程和触发器等数据库对象:一是在SQL Server Management Studio通过可视化操作实现,一是在查询窗口执行相关T-SQL语句实现。

二.实验环境●SQL Server Management Studio●BookStore数据库提示1:到“课程辅助材料”中下载BookStore数据库,在SQL Server中附加。

三.实验内容说明:标记为▲的是必做题目,其他为选作题目。

首先需要附加BookStore数据库。

1▲.创建视图。

(1)创建视图V_BookSell,使其包含图书销量情况。

要求显示图书代码(BookCode)、图书名称(BookName)、作者(Author)、出版社名称(Publisher)以及数量(Amount)。

(2)创建视图V_CustomerBookOrderDetail。

要求显示订单号(OrderCode)、客户名(Name)、客户等级(VIPClass)、书名(BookName)、单价(Price)、数量(Amount)、折扣(Discount)以及总价(TotalPrice=Price*Amount*Discount)。

(3)创建视图V_CustomerVIPABTotalOrder,汇总客户订单信息。

使其包含用户等级为“A”和“B”、且不姓“郭”和“刘”的客户订单信息,要求显示客户姓名(Name)以及所订图书总金额,并按所订图书总金额降序排列。

2.创建存储过程(1)▲创建存储过程proc_SearchBook,查询指定书名的图书信息。

(2)创建存储过程proc_FuzzySearchBook,实现按书名(全名或部分书名)模糊查询图书信息。

(3)创建存储过程proc_SearchCustomerMoney,查询指定客户在某一年之前的购书总金额(已知客户号和年份,输出总金额)。

存储过程的建立与使用

存储过程的建立与使用

存储过程的建立与使用存储过程的建立与使用一、实验目的理解存储过程的概念、作用、建立和调用方法。

二、实验原理使用CREA TE PROCEDURE语句创建存储过程,ALTER PROCEDURE语句修改存储过程,DROP PROCEDURE语句删除存储过程,存储过程有不带参数的、有带输入参数的、有带输出参数(output)的,还可以有带返回值的。

创建好的存储过程可以使用EXEC procedure_name语句执行。

三、实验设备安装有SQL SERVER 2000的计算机。

四、实验示例1、模糊查询create procedure proc_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 proc_empname '刘%'2、利用存储过程计算出’E0008’业务员的销售总金额。

create procedure proc_saletot @E_no char(5), @p_tot int outputasselect @p_tot=sum(tot_amt)from saleswhere sale_id=@E_nogodeclare @tot_amt intexec proc_saletot E0014, @tot_amt outputselect @tot_amt3、创建一带返回值的存储过程,返回某一部门的平均工资create proc proc_avg_salary @Dept char(4)asdeclare @avg_salary intselect @avg_salary=avg(salary)from employeewhere dept=@Deptreturn @avg_salarydeclare @avg intexec @avg=proc_avg_salary '人事'print '返回值='+cast(@avg as char(10))五、实验内容1、利用存储过程,给employee表添加一条业务部门员工的信息。

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

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

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所示。

实验五 存储过程和触发器

实验五 存储过程和触发器

实验五触发器、存储过程操作实验本实验需要2学时。

请大家先根据“触发器.doc”文档完成相关操作,再进行本次实验。

介绍完“存储过程”后,需上交本次实验报告。

一、实验目的(1)掌握SQL Server中的触发器的使用方法;(2)掌握存储过程的操作方法。

二、实验内容1. 创建、查看、修改和删除触发器。

2. 创建、查看、修改和删除存储过程。

三、实验方法1. 触发器的操作(1)建立触发器方法一:使用企业管理器首先,打开企业管理器,定位数据库并找到要创建触发器的表;然后,右击该表名,在弹出的快捷菜单中选择“设计表”,在打开的“设计表”窗口中单击按钮,打开如图1所示窗口。

图1 触发器属性窗口最后,在触发器属性窗口中输入触发器的内容,并单击“确定”按钮。

方法二:使用CREATE TRIGGER语句语法:CREATE TRIGGER <触发器名>ON { <表名> | <视图名>}{ FOR | INSTEAD OF | AFTER}{ [UPDATE] [,] [INSERT] [,] [DELETE]}AS<SQL 语句块>(2)查看触发器方法一:使用企业管理器方法二:使用T-SQL语句- sp_help <触发器名>- sp_helptext <触发器名>- sp_depends <触发器名>(3)修改触发器方法一:使用企业管理器方法二:使用ALTER TRIGGER语句语法:ALTER TRIGGER <触发器名>ON { <表名> | <视图名>}{ FOR | INSTEAD OF | AFTER}{ [UPDATE] [,] [INSERT] [,] [DELETE]} AS<SQL 语句块>(4)删除触发器方法一:使用企业管理器方法二:使用DROP TRIGGER语句语法为:DROP TRIGGER <触发器名>2. 存储过程的操作(1)建立存储过程方法一:使用建立存储过程向导方法二:使用企业管理器方法三:使用SQL语句(CREATE PROCEDURE)语法:CREATE PROC[EDURE] <存储过程名>[{@<参数名> <数据类型>}]AS {<SQL语句> | <语句块> }(2)查看存储过程方法一:使用企业管理器方法二:使用SQL语句(系统存储过程)- sp_help <存储过程名>- sp_helptext <存储过程名>- sp_depends <存储过程名>(3)修改存储过程方法一:使用企业管理器方法二:使用SQL语句(ALTER PROCEDURE)语法为:ALTER PROC[EDURE] <存储过程名>[{@<参数名> <数据类型>}]AS {<SQL语句>| <语句块> }(4)删除存储过程方法一:使用企业管理器方法二:使用DROP PROCEDURE语句语法为:DROP PROCEDURE <存储过程名>四、实验内容1、在学生表student上建立一个DELETE类型的触发器tr_delete,触发动作是显示信息“已删除学生表中的数据”。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

实验报告5 数据库编程存储过程

实验报告5 数据库编程存储过程

实验5:数据库编程——存储过程一.实验目的通过本实验使学生掌握存储过程的基本概念和创建、执行、删除方法。

二.实验类型验证型三.实验学时2学时四.实验原理及知识点1.Transact-SQL编程2.存储过程的创建和执行3.存储过程的修改和删除五.实验环境1.硬件设备要求:PC及其联网环境;2.软件设备要求:Windows操作系统;MS SQL Server数据库管理系统。

六.实验内容及步骤利用存储过程实现下面的应用:从账户1转指定数额的款项到账户2中。

假设账户关系表为Account(Accountnum,total)存储过程create procedure pro_transfer(@inAccount int,@outAccount int,@amount float)asdeclare@totalDepositOut float,@totalDepositIn float,@inAccountnum int;beginselect@totalDepositOut=(select total from Account where accountnum =@outAccount);if (@totalDepositOut is null)beginrollback;return;endif (@totalDepositOut<@amount)beginrollback;return;endselect@inAccount=(select accountnum from Account where accountnum =@inAccount)if(@inAccountnum is null)beginrollback;return;endupdate Account set total=toal-@amountwhere accountnum=@outAccount;update Account set total=total+@amountwhere accountnum=@inAccount;commit;end七.实验总结通过这次实验学会写简单的存储过程,了解了在sql server 2008中的存储过程的基本语法,发现存储过程的语法和pascal有很大的相似之处,不过sql server 2008的语法和书上的语法有很大的不同,只能自己去网上找资料,不过这锻炼了我的自学能力,不过就写一个存储过程还是有很多不够,还是要勤加练习。

存储过程的创建和使用

存储过程的创建和使用

存储过程的创建和使用一、特点●存储过程包含一条或多条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: 存储过程名。

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

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

实验五存储过程和触发器一、实验目的(1) 通过实践理解存储过程和触发器的概念、作用及优点;(2) 掌握存储过程的定义与调用,实现存储过程中带有不同参数的应用;(3) 掌握创建触发器。

二、实验原理1.存储过程一个被命名的存储在服务器上的T-SQL语句的集合,是封装重复性工作的一种方法。

(1)创建存储过程CREATE PROC[DURE]PROCDURE_NAME [{@PARAMENT DATA_TYPE}[VARYING][=DEFAULT][OUTPUT]] [, (1)AS SQL_STATEMENTPROCEDURE_NAME:新存储过程的名称,必须符合标识符规则且唯一。

@PARAMETER:过程中的参数。

可以声明一个或多个参数。

用户必须在执行过程时提供每个所声明参数的值(除非定义了该参数的默认值)。

使用 @ 符号作为第一个字符来指定参数名称。

参数名称须符合标识符规则。

每个过程的参数仅用于该过程本身;相同的参数名称可用在其它过程中。

默认情况下参数只能代替常量,不能代替表名、列名或其它数据库对象名称。

DATA_TYPE:参数的数据类型。

DEFAULT:参数的默认值。

如果定义了默认值,不必指定该参数的值即可执行过程。

默认值必须是常量或 NULL。

OUTPUT:表明参数是返回参数。

该选项的值可以返回给 EXEC[UTE]。

使用 OUTPUT 参数可将信息返回给调用过程。

(2)执行存储过程SQL SERVER系统中,可以使用EXECUTE语句执行存储过程。

EXECUTE语句也可以简写为EXEC。

如果将要执行的存储过程需要参数,那么应该在存储过程名称后面带上参数值。

[EXEC[UTE]]{[@RETURN_STATUS=]{PROCEDURE_NAME[;NUMBER]|@PROCEDURE_NAME_VAR}[@PARAMETER={VALUE|@VARIABLE[OUTPUT]|[DEFAULT]}[,…N](3) 删除存储过程使用DROP PROCEDURE语句可永久地删除存储过程。

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

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

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

二、实验内容(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.利用企业管理器创建student_grade执行结果:2.利用查询分析器创建名为proc_exp的存储过程3.修改存储过程proc_exp.4. 创建名为proc_add的存储过程5. 调用存储过程proc_exp6. 删除刚刚创建的proc_add和proc_exp两个存储过程四、实验总结通过本次实验我学会了存储过程的创建,修改,调用.通过无参数存储过程与有参数的存储过程的对比性更好的理解了参数在存储过程中的具体应用,最后是存储过程的删除,利用drop语句即可实现,我慢慢喜欢上了数据库。

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

华北水利水电学院
[数据库实验]
[存储过程创建与应用]
姓名:***
班级:***
学号:***
所在专业:计算机科学与技术
实验五存储过程创建与应用
一、实验目的
使学生理解存储过程的概念,掌握创建存储过程的使用、执行存储过程和查看、修改、删除存储过程的方法。

二、实验内容过程
(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两个存储过程。

三、实验总结
这次试验也说不上很难,比前两次增加了一点难度。

感觉第三小题相比有点难度,但是经过查书最后做出来了。

除了第四小题,其他在课本上都有原型,只要对照课本,都能做出来。

做第四小题时遇到点问题,主要是往sc表中添加学生成绩记录不知道用什么语句。

最后经过问同学,知道了该怎么做,做了出来!总体来说,还是比较简单的。

相关文档
最新文档