实验9-10存储过程

合集下载

存储过程创建与应用(实验操作)

存储过程创建与应用(实验操作)

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

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

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

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

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

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

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

网络存储过程实验报告(3篇)

网络存储过程实验报告(3篇)

第1篇一、实验背景随着互联网技术的快速发展,数据存储和传输已成为网络通信中的关键环节。

网络存储过程是数据库中的一种高级应用,它可以将多个SQL语句封装成一个存储过程,从而实现数据库的自动化管理和提高数据库的执行效率。

本实验旨在通过实践,掌握网络存储过程的创建、调用和优化方法。

二、实验目的1. 了解网络存储过程的基本概念和特点。

2. 掌握网络存储过程的创建方法。

3. 熟悉网络存储过程的调用和优化技巧。

4. 通过实验,提高数据库管理能力。

三、实验环境1. 操作系统:Windows 102. 数据库管理系统:MySQL 5.73. 实验工具:MySQL Workbench四、实验内容1. 创建网络存储过程(1)创建一个名为“select_user_info”的存储过程,用于查询用户信息。

```sqlDELIMITER //CREATE PROCEDURE select_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 user_name VARCHAR(50), IN user_age INT)BEGINUPDATE users SET name = user_name, age = user_age WHERE id = user_id;END //DELIMITER ;```2. 调用网络存储过程(1)调用“select_user_info”存储过程,查询用户ID为1的用户信息。

```sqlCALL select_user_info(1);```(2)调用“update_user_info”存储过程,更新用户ID为1的用户信息。

《数据库与信息系统》实验4指导解析_9-10

《数据库与信息系统》实验4指导解析_9-10

实验四数据库操作语言SQL一.实验目的⚫了解使用SQL中DDL语句创建数据库和表的方法⚫熟练掌握使用SQL中DML语句对数据库进行查询、插入、修改和删除等操作的方法⚫掌握可编程对象视图和存储过程的创建与使用方法,了解触发器的创建方法二.实验环境及素材⚫MySQL和Navicat for MySQL⚫bookstore数据库的脚本文件bookstore.sql三.实验内容首先创建一个bookstore数据库,执行bookstore.sql脚本文件实现表的创建及数据记录的添加。

然后在bookstore数据库中完成以下题目(bookstore数据库设计说明参见10.1节)。

①在Navicat for MySQL中,创建数据库bookstore。

②右击数据库bookstore,选择“运行SQL文件…”,在对话框中浏览选择“bookstore.sql”文件,点击“开始”即可完成数据表定义及添加数据记录。

③在左栏连接窗口展开数据库“bookstore”/表,右击“表”选“刷新”菜单,即可看到恢复的各数据表。

9.创建和使用存储过程。

解析:存储过程是经过编译的SQL语句的集合。

用户首先创建存储过程,然后在程序中调用该存储过程执行。

创建存储过程可以在Navicat for MySQL中使用向导建立,也可以使用SQL的CREATE PROCDURE语句。

存储过程可以接受参数、也可将查询信息通过输出参数返回调用者。

常用存储过程的语法格式:CREATE PROCDURE 存储过程名( [形式参数列表])SQL语句段“形式参数列表”中多个参数之间用逗号分隔,如果没有参数,则()中为空。

每个参数由输入输出类型、参数名和参数类型三部分组成,定义规则如下:[IN|OUT|INOUT 参数名类型输入输出类型中:IN是输入参数,即把数据传递给存储过程;OUT是输出参数,即从存储过程返回值;INOUT表示输入输出,即传入也能返回值。

实验九 存储过程

实验九 存储过程

存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集合,经编译后存储在数据库中。

是SQL 语句和可选控制流程语句的预编译集合,作为一个单元被DBMS处理。

存储过程以一个名称存储在数据库内,可由应用程序通过一个调用执行,而且允许用户声明变量(指定参数))有条件地执行。

也可被应用程序嵌套调用。

存储过程可包含程序流、逻辑以及对数据库的查询。

它们可以接受参数、输出参数、返回单个或多个结果集以及返回值。

优点:1、增强了SQL语言的功能和灵活性。

可以在单个存储过程中执行一系列SQL 语句;可以从自己的存储过程内引用其它存储过程。

故即可以简化一系列复杂语句,同时完成复杂的判断和较复杂的运算。

2、保证数据的安全性和完整性。

通过存储过程可以使没有权限的用户在控制之下间接地存取数据库,从而保证数据的安全;可以使相关的动作在一起发生,从而可以维护数据库的完整性。

3、存储过程在创建时即在服务器上进行编译,所以执行起来比单个SQL 语句快。

SQL Server 2005提供了三种存储过程1、系统存储过程:由系统提供,以…sp_‟为前缀。

可以作为命令执行各种操作。

用来进行系统的各项设定,取得系统及用户信息,执行系统管理工作。

系统存储过程定义在系统数据库master中。

如sp_help就是取得指定对象的相关信息。

2、扩展存储过程:在SQL Server环境之外执行的动态链接库称为扩展存储过程,其前缀是…sp_‟(或‟xp_ ‘,用来调用操作系统提供的功能)。

使用时需要先加载到SQL Server系统中,并且按照使用存储过程的方法调用执行。

3、用户自定义的存储过程:也称本地存储过程,是指在用户数据库中创建的存储过程,这种存储过程完成用户指定的数据库操作,其名称不能以…sp_‟为前缀。

如果本地存储过程的名称前面有一个“#”,该存储过程就称为局部临时存储过程,这种存储过程只能在一个用户会话中使用。

用户存储过程的创建与执行语法格式:CREATE PROC [ EDURE ] procedure_name [ ; number ] /* 定义存储过程名*/[ { @parameter data_type } /*定义参数的类型*/[ V ARYING ] [ = default ] [ OUTPUT ]] /*定义参数的属性*/[ ,...n ][ WITH { RECOMPILE | ENCRYPTION | RECOMPILE , ENCRYPTION }]/*定义存储过程的处理方式*/ [ FOR REPLICATION ]AS sql_statements /*执行的SQL操作*/ 参数:每个参数名前要有一个“@”符号,每一个存储过程的参数仅为该程序内部使用,参数的类型除了IMAGE外,其他SQL Server所支持的数据类型都可使用。

存储过程与触发器实验报告

存储过程与触发器实验报告

存储过程与触发器实验报告一、引言存储过程和触发器是数据库中常用的高级功能,它们能够提高数据库的性能、数据一致性和安全性。

本实验报告将详细介绍存储过程和触发器的概念、用途以及实际应用。

二、存储过程2.1 概念存储过程是一组预定义的SQL语句集合,它们被命名并存储在数据库中,可以作为一个单元来调用和执行。

存储过程可以接受参数,并返回一个或多个结果集。

存储过程可以在应用程序层面减少网络传输,提高数据库性能。

2.2 用途存储过程的应用非常广泛,主要用于以下几个方面: 1. 数据库业务逻辑封装:将复杂的业务逻辑封装到存储过程中,使应用程序只需调用存储过程而不需要编写大量的SQL语句,简化应用程序的开发。

2. 数据库性能优化:通过存储过程可以减少网络传输,提高数据库性能。

3. 数据库安全性:通过存储过程,可以实现对数据库的访问权限控制,提高数据库的安全性。

2.3 示例下面以一个简单的示例来说明存储过程的使用。

2.3.1 创建存储过程CREATE PROCEDURE `get_employee_by_department` (IN department_id INT)BEGINSELECT * FROM employee WHERE department_id = department_id;END2.3.2 调用存储过程CALL `get_employee_by_department`(1);2.4 优化技巧为了进一步提高存储过程的性能,可以采用以下优化技巧: 1. 减少存储过程的参数:过多的参数会增加网络传输的负担,应尽量减少存储过程的参数数量。

2. 避免长时间占用资源:存储过程应尽量快速执行,避免长时间占用数据库资源。

三、触发器3.1 概念触发器是与表相关联的特殊类型的存储过程,它在表的数据发生变化时自动执行。

触发器可以监视INSERT、UPDATE或DELETE等操作,并在这些操作发生时自动触发执行一段预定义的代码。

实验六 存储过程

实验六 存储过程

实验六、存储过程一、实验目的(1)掌握T-SQL流控制语句。

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

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

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

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

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

2、创建带参数的存储过程(1)创建一个名为stu_proc1的存储过程,查询某系、某姓名的学生的学号、姓名、年龄、选修课程名、成绩。

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

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

(2)创建一个名为student_sc的存储过程,可查询出某学号段的同学的学号、姓名、总成绩。

(学号起始号与终止号在调用时输入,可设置默认值。

)执行该存储过程。

3、创建带输出参数的存储过程(1)创建一个名为course_average的存储过程,可查询某门课程考试的平均成绩。

总成绩可以输出,以便进一步调用。

(2)创建一执行该存储过程的批处理,要求当平均成绩小于60时,显示信息为:“XX课程的平均成绩为:XX,其平均分未达60分”。

超过60分时,显示信息为:“XX课程的平均成绩为:XX”。

4、创建带重编译及加密选项的存储过程创建一个名为update_sc、并带重编译及加密选项的存储过程,可更新指定学号、指定课程号的学生的课程成绩。

(学号、课程号在调用时输入)5、使用T-SQL语句管理和维护存储过程(1)使用sp_helptext查看存储过程student_sc的定义脚本。

(2)使用select语句查看student_sc存储过程的定义脚本。

(3)将存储过程stu_pr改为查询学号为2011001的学生的详细资料(4)删除存储过程stu_pr.6、使用SQL Server Management Studio管理存储过程(1)在SQL Server Management Studio中重新创建刚删除的存储过程stu_pr.(2)查看存储过程stu_pr,并将该过程改为查询051班女生的所有资料。

存储过程及其实例演示

存储过程及其实例演示

存储过程及其实例演⽰概念存储过程存储过程是为了完成特定功能的SQL语句的集合。

包括了⼀些流程控制语句及数据类型。

种类⾃定义存储过程创建1.使⽤CREATE PROCEDURE创建存储过程CREATE PROCEDURE <Procedure_Name, sysname, ProcedureName>-- Add the parameters for the stored procedure here<@Param1, sysname, @p1> <Datatype_For_Param1, , int> = <Default_Value_For_Param1, , 0>,<@Param2, sysname, @p2> <Datatype_For_Param2, , int> = <Default_Value_For_Param2, , 0>ASBEGIN-- SET NOCOUNT ON added to prevent extra result sets from-- interfering with SELECT statements.SET NOCOUNT ON;-- Insert statements for procedure hereSELECT <@Param1, sysname, @p1>, <@Param2, sysname, @p2>ENDGOps:procedure_name 存储过程的名称。

最长为128个字符sysname:存储过程的参数。

相当于数据类型nvarchar(128)。

相见:@param1:存储过程中使⽤到的参数。

@Datatype:参数的数据类型。

另外⼤家可以看到这⾥的SQL语句都是⼤写的。

这是因为SQL语⾔在执⾏的时候是先转化为⼤写再去执⾏,对于⼀些⼩的程序这些转化的时间可以忽略,但是当⼀些⼤型的数据处理的时候就会浪费许多时间。

存储过程实验报告

存储过程实验报告

《数据库系统原理》实验报告实验名称:存储过程和函数实验任课教师:学号:姓名:完成日期 2012年11月17日一、实验目的1、熟悉ORACLE存储过程和函数的定义及使用2、了解其在数据库中的存储二、实验步骤与实验结果1、创建存储过程create [or replace] procedure [模式名] 过程名[(参数[IN/OUT/IN OUT] 参数类型)]{is/as}[语句序列][说明部分]begin[exception 例外处理]end [过程名];说明:IN参数:输入参数,主程序向过程传递参数;OUT参数:输出参数,过程向主程序传递参数;IN OUT参数:可以实现过程与主过程双向交流数据。

如果存储过程有OUT或者IN OUT类型的参数,那么存储过程就只能在PL/SQL中被调用,不能使用EXECUTE或者CALL调用。

set serveroutput on 打开oracle的输出图1打开oracle的输出例:不带参数的存储过程图2不带参数的存储过程例:带有输入参数的存储过程图3带有输入参数的存储过程例:既有输入参数又有输出参数的存储过程图4既有输入参数又有输出参数的存储过程例:PL/SQL环境下存储过程的定义与执行图5 PL/SQL环境下存储过程的定义图6 PL/SQL环境下存储过程的执行2、创建函数CREATE [OR REPLACE] FUNCTION [模式名.] 函数名[(参数名[IN] 数据类型……)]RETURN 数据类型{IS/AS}[说明部分]BEGIN语句序列RETURN (表达式)[EXCEPTION例外处理程序]END [函数名];说明:函数只能有输入参数,不能有输出参数,函数有且只有一个返回值。

例:带有两个参数的函数,函数返回两个参数的和图7带有两个参数的函数,函数返回两个参数的和图8带有两个参数的函数,函数返回两个参数的和4、分析、实现上述例题并完成如下功能要求设有基于图书馆数据库的4个基本表:图书(书号,书名,作者,出版社,单价)读者(读者号,姓名,性别,办公电话,部门,读者类别编号)借阅(读者号,书号,借出日期,归还日期)读者类别(读者类别编号,读者类别,允许借阅册数,允许借阅天数)编写存储过程实现:1)根据读者号查询该读者的图书借阅的册数图9 查询该读者的图书借阅的册数2)根据书名和作者查询相应的出版社和单价图10 查询相应的出版社和单价3)读者借阅图书时,需要查询是否超出允许借阅册数,如果超出则不能继续借阅图书,试创建一存储过程完成此查询功能。

数据库存储过程实验总结

数据库存储过程实验总结

数据库存储过程实验总结一、实验目标本次实验的目标是掌握数据库存储过程的基本概念、语法和用法,通过实际操作加深对存储过程的理解,并提高数据库编程的能力。

二、实验内容在本次实验中,我们主要进行了以下几个方面的操作:1. 了解存储过程的基本概念和优点。

2. 学习存储过程的创建、修改和删除。

3. 掌握存储过程中参数的使用。

4. 实践存储过程在查询、插入、更新和删除数据中的应用。

三、实验步骤与操作过程1. 打开数据库管理工具,连接到数据库服务器。

2. 创建一个新的存储过程,命名为“GetEmployeeInfo”,用于查询员工信息。

3. 在存储过程中定义输入参数,例如员工ID。

4. 在存储过程中编写SQL查询语句,根据输入参数查询员工信息。

5. 执行存储过程,查看查询结果。

6. 修改存储过程,添加插入、更新和删除数据的操作。

7. 调用存储过程,测试插入、更新和删除功能。

8. 删除存储过程,释放资源。

四、遇到的问题与解决方案在实验过程中,我们遇到了以下问题:1. 无法正确创建存储过程,出现语法错误。

解决方案:检查SQL语句的语法,确保所有语句都正确无误。

2. 存储过程中无法正确使用参数。

解决方案:检查参数的定义和使用方式,确保参数名称和数据类型与定义一致。

3. 存储过程执行时出现异常。

解决方案:检查SQL语句中的错误,如表名、列名是否正确,以及是否有权限执行相应的操作。

4. 无法正确删除存储过程。

解决方案:检查删除语句的语法,确保使用正确的删除命令。

五、实验总结与心得体会通过本次实验,我们深入了解了数据库存储过程的概念、语法和用法,掌握了如何创建、修改、调用和删除存储过程。

在实践中,我们发现存储过程可以提高数据库操作的效率和安全性,减少网络流量和数据库负载。

同时,我们也发现了自己在SQL编程中存在的一些不足之处,需要在今后的学习中不断改进和提高。

实验7存储过程

实验7存储过程

实验7 存储过程一、实验目的与要求1.掌握交互式创建存储过程的方法。

2.掌握用T-SQL创建存储过程的方法。

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

4.掌握修改存储过程的方法,而且不改变权限。

5.掌握交互式删除存储过程的操作。

6.掌握用SQL删除存储过程的方法。

二、实验内容1.交互式创建并执行存储过程Pro_Qsinf:通过学生的学号来查询该学生的姓名、年龄和所在系。

默认学号是200215121。

2.用T-SQL创建并执行存储过程Pro_Qgrade:通过学生的姓名和课程名来查询该学生该课程的成绩。

3.交互式修改存储过程Pro_Qsinf。

4.用SQL修改存储过程Pro_Qsinf。

5.交互式删除存储过程Pro_Qsinf。

6.用SQL删除存储过程Pro_Qgrade。

三、实验步骤1. 交互式创建并执行一存储过程(1)创建存储过程Pro_Qsinf:通过学生的学号来查询该学生的姓名、年龄和所在系。

①打开创建存储过程窗口。

在“对象资源管理器”中,依次展开“数据库”->“学生-课程”->“可编程性”->“存储过程”节点,右击“存储过程”,选择“新建存储过程”命令,如图1所示。

打开存储过程编辑窗口,并包含模板语句,如图2所示。

②修改模板语句。

将模板语句修改为图3所示的SQL语句。

③语法检查。

单击工具栏中的分析按钮,在“结果”窗口中显示“命令已成功完成”。

④保存存储过程。

单击工具栏中的执行按钮,保存创建的存储过程。

⑤查看数据库学生-课程中的存储过程对象。

在对象资源管理器中,右击数据库学生-课程中的“存储过程”节点,选择“刷新”命令,展开“存储过程”节点,查看新建的存储过程Pro_Qsinf,如图4所示。

图1 选择“新建存储过程”命令图2 存储过程编辑窗口图3 创建存储过程Pro_Qsinf图4 数据库学生-课程中的存储过程(2)执行存储过程Pro_Qsinf。

查询并显示默认学号200215121和学号为200215122的学生姓名、年龄和所在系。

实验9 T SQL游标存储过程并发控制教学教材

实验9 T SQL游标存储过程并发控制教学教材

实验9-T-SQL游、发并程储、标存过、制控.精品文档XX实验报告: 学号系专班课课学时名类实、游标、存储过程、并发控T-SQ名实验目的、了解并能简单应T-SQ语言、理解并简单的使用游标实验内容一、了解并应T-SQ编程语)用下面的脚本创建一个表并利用循环向表中添2条记录USE AdventureWorksCREATE TABLE MYTB(ID INT,V AL CHAR(1))GODECLARE @COUNTER INT;SET @COUNTER=0WHILE(@COUNTER < 26)BEGININSERT INTO MYTB V ALUES(@COUNTER,CHAR(@COUNTER + ASCII))) SET @COUNTER= @COUNTER + 1ENDMicrosoft SQL Server Management Studi中新建一个查询,输入并执行上面的本,然后Microsoft SQL Server Management Studi的“对象资源管理器”中查MYT以及其中的数据)用下面的脚本查Employe表中的雇员信息,包EmployeeIGender,Gende的属性根据其值相应地显示为‘男'或‘女'USE AdventureWorksSELECT EmployeeID,Gender=CASE GenderWHEN THENMalWHEN THENFemalENDFROM HumanResources.EmployeeMicrosoft SQL Server Management Studi中新建一个查询,输入并执行上面的本,观察执行结果(3)下面的脚本显示了T-SQL中的错误处理。

BEGIN TRYSELECT 5/0END TRYBEGIN CATCH收集于网络,如有侵权请联系管理员删除.精品文档收集于网络,如有侵权请联系管理员删除.精品文档存储过程的功)变量说.)Select,UpdatANS(美国国家标准化组织)兼容SQ命.)els…whil)一般流程控制命(i)内部函存储过程的分相关管理工作取得信sp开用来进行系统的各项设)系统存储过程:)本地存储过程:用户创建的存储过程是由用户创建并完成某一特定功能的存储程,事实上一般所说的存储过程就是指本地存储过程)临时存储过程:分为两种存储过程作为其名称的第一个字符,则该存储过程将成一是本地临时存储过程,以井字(#;tempd数据库中的本地临时存储过程,且只有创建它的用户才能执行一个存放号开始,则该存储过程将成为一个存储二是全局临时存储过程,以两个井字(##数据库中的全局临时存储过程,全局临时存储过程一旦创建,以后连接到服务tempd的任意用户都可以执行它,而且不需要特定的权限是中,远程存储过(Remote Stored Procedures)远程存储过程:SQL Server200命令执行一个远程于远程服务器上的存储过程,通常可以使用分布式查询EXECUT储过程是用户可以使用外部程)扩展存储过程:扩展存储过(Extended Stored Procedures开头语言编写的存储过程,而且扩展存储过程的名称通常xp、存储格式中的存储过程及相关介绍sq]程序编.存储过程[CREATE PROCEDURE 拥有#1024)]…参参#1[[WITH{RECOMPILE | ENCRYPTION | RECOMPILE, ENCRYPTION}][FOR REPLICATION]程序AS102个字。

数据库实验——存储过程

数据库实验——存储过程

数据库原理与应用实验报告题目:存储过程学号:_________姓名:_________教师:_________实验题目1、实验内容1 创建学生表StudentCREATE TABLE Student( Sno CHAR(9) PRIMARY KEY,Sname CHAR(20) UNIQUE,Ssex CHAR(2),Sage SMALLINT,Sdept CHAR(20));插入记录(200215121, 李勇,男,20,CS)(200215122,刘晨,女,19,CS)(200215123, 王敏,女,18,MA)(200215125,张立,男,19,IS)2 创建一个名为Student_Info的无参数存储过程,该过程实现从表中查询所有学生基本信息。

CREATE PROCEDURE Student_InfoASSELECT * FROM Student3 执行Student_Info存储过程EXECUTE Student_Info4 创建一个名为Student_CS的无参数存储过程,该存储过程实现从表中查询所有计算机系的学生姓名5 执行Student_CS存储过程6 创建带参数的存储过程。

输出指定学号的学生信息。

CREATE PROCEDURE Query_Student_Info@Sno char(9)ASSELECT * FROM Student WHERE Sno=@Sno7 执行存储过程Query_Student_InfoEXECUTE Query_Student_Info ‘200215121’8 创建带参数的存储过程。

根据指定参数增加学生信息,如果学生编号已经存在则不能增加。

CREATE PROCEDURE Add_Student@Sno char(9),@Sname char(20),@Ssex char(2),@Sage smallint,@Sdept char(20)@Flag int=0ASSELECT @Flag=count(*) FROM Student WHERE Sno=@SnoIF @Flag=0BEGININSERT INTO StudentV ALUES(@SNO, @Sname,@Ssex, @Sage,@Sdept)PRINT ‘插入成功!’ENDELSEPRINT ‘插入错误,该学号的学生信息在数据库中已经存在!’9 执行存储过程Add_Student,结果分别是什么?EXECUTE Add_Student ‘200215121’, ‘李勇’,’男’,20,’CS’EXECUTE Add_Student ‘200215126’, ‘李勇’,’男’,20,’CS’10 创建带输出参数的存储过程。

数据库实验-存储过程、触发器

数据库实验-存储过程、触发器
from SC
group by Sno
order by sum(Grade)desc
exec total
drop proc total
执行结果:命令已成功完成。
如图:
(3)创建存储过程,查找某门课的最高分(带输入参数的存储过程)。
代码:
create proc grade1
@Cname char(20)
石家庄经济学院
实验报告
学院:信息工程学院
专业:网络工程
信息工程学院计算机实验中心制
学号
411109030110
姓名
马立杰
实验日期
2014.5.12
实验室
260
指导教师
张有华
设备编号
实验内容
实验6存储过程、触发器
一实验题目
1.存储过程的定义和使用
2.触发器的创建与使用
二实验目的
1.掌握存储过程的定义、执行和调用方法。
如图:
(5)创建存储过程,统计某门课选修的人数,将人数返回。(带返回值的存储过程)
代码:
create proc proc1
@Cno char(10),
@number int output
as
select @number=count(*)
from SC
where Cno=@Cno
group by Cno
where Sno=
(select top 1 Sno from SC
group by Sno
order by count(*) desc)
exec proc2
drop proc proc2
执行结果:命令已成功完成。
如图:
2.触发器的创建与使用

实训九 存储过程的创建和使用KU

实训九  存储过程的创建和使用KU

训九存储过程的创建和使用一、实训目的1. 了解存储过程的作用;2. 掌握创建、修改及删除存储过程的方法;3. 掌握执行存储过程的方法。

二、实训步骤(一) 不带参数的存储过程的创建和修改1.在student数据库中创建一个名为myp1的存储过程,该存储过程的作用是显示t_student中的全部记录。

2.运行myp1,检查是否实现功能。

3.修改myp1,使其功能为显示t_student中班级为05541班的学生记录,然后测试是否实现其功能。

4.创建一个存储过程myp2,完成的功能是在表t_student、表t_course和表t_score中查询以下字段:班级、学号、姓名、性别、课程名称、考试分数。

(参考教材P169例9-2)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中查询此学生的信息。

数据库原理实验报告

数据库原理实验报告

计算机与信息学院数据库原理实验报告专业:计算机科学与技术班级:2012级本科班学号:*****姓名:指导教师:2014年06月18 日实验项目列表计算机与信息学院实验报告纸实验一数据库创建与管理一、实验目的与要求1、熟练掌握SSMS中界面方式创建和管理数据库。

2、熟练掌握SSMS查询编辑器T-SQL语句创建和管理数据库。

3、熟练掌握备份和还原数据库。

二、实验内容1、界面方式创建和管理数据库(1)创建数据库(2)修改数据库(3)删除数据库2、利用企业管理器备份和还原数据库(1)备份数据库(2)还原数据库3、T-SQL语句方式创建和管理数据库(1)创建SPJ数据库:在SSMS中“新建查询”,输入以下语句并运行CREATE DATABASE SPJON(NAME=’SPJ_Data’,FELENAME='C:\Program Files\Microsoft SQL Server\MSSQL\data\SPJ_Data.MDF' ,SIZE = 3,MAXSIZE = 10,FILEGROWTH = 10%)LOG ON(NAME = 'SPJ_Log', FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL\data\SPJ_Log.LDF' ,SIZE = 1,FILEGROWTH = 10%)(2)修改SPJ数据库:在查询分析器中输入以下语句并运行ALTER DATABASE SPJMODIFY FILE(NAME='SPJ_Data',SIZE=4,ALTER DATABASE SPJADD FILE(NAME='SPJ_Data_2', FILENAME='C:\Program Files\Microsoft SQL Server\MSSQL\Data\SPJ_Date_2.ndf',SIZE=1,MAXSIZE=10,FILEGROWTH=10%)(3)删除SPJ数据库:DROP DATABASE SPJ4、界面方式创建数据库XSBOOK,写出操作过程。

实验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的结果。

数据库原理实验报告S10-数据库存储过程

数据库原理实验报告S10-数据库存储过程

实验10 数据库存储过程的建立实验日期和时间:实验室:班级:学号:姓名:实验环境:1.硬件:2.软件:实验原理:1.理解存储过程的概念、优点和使用原则2.掌握存储过程的创建、执行、查看、修改和删除方法一、存储过程的概念▪SQL SERVER中的存储过程类似于编程语言中的过程或函数。

--以下为创建一个简单的用户存储过程create proc p_test(@a int,@b int output)asset @b=@a+1--以下为调用declare @a int,@b intselect @a=1,@b=0exec p_test @a,@b outputselect @a,@b在使用Transact-SQL语言编程的过程中,可以将某些需要多次调用的实现某个特定任务的代码段编写成一个过程,将其保存在数据库中,并由SQL Server服务器通过过程名来调用它们,这些过程就叫做存储过程。

▪存储过程在创建时就被编译和优化,调用一次以后,相关信息就保存在内存中,下次调用时可以直接执行。

存储过程有以下特点:▪存储过程中可以包含一条或多条Transact-SQL语句。

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

▪在一个存储过程中可以调用另一个存储过程。

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

存储过程的优点:▪实现了模块化编程,一个存储过程可以被多个用户共享和重用。

▪通过通用编程结构和过程重用实现编程框架。

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

▪使用存储过程可以通过本地存储、代码预编译和缓存技术实现高性能的数据操作,加快程序的运行速度。

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

▪使用存储过程通过隔离和加密的方法提高数据库的安全性。

存储过程的分类:在SQL Server中的存储过程分为两类:即系统提供的存储过程、扩展存储过程和用户自定义的存储过程。

▪系统存储过程:由系统自动创建,系统存储过程出现在每个系统定义数据库和用户定义数据库的sys构架中。

实验十三:存储过程(二)

实验十三:存储过程(二)

【实验名称】
实验十三:存储过程(二)
【实验重要步骤】
第1题:在studentDB中创建一个名为proc_course的存储过程,产生某门课程的选课学生情况列表,其中包括课程号、课程名、学号、姓名、成绩。

要求输入某门课程的课程名,得到上述信息。

第2题:使用默认参数,创建一个用于向选课表中插入记录的存储过程proc_elective,如果成绩没有,默认值为‘无’。

第3题:在学生成绩库中定义存储过程proc_avg,要求实现输入学生学号,根据该学生所选课程的平均成绩显示提示信息,即如果平均成绩在60分以上,显示“此学生综合成绩合格!成绩为XX分”,否则显示“此学生综合成绩不合格,成绩为XX分!”并调用此过程。

第4题:在学生成绩库中创建存储过程,存储过程名为proc4,要求实现如下功能:根据学生学号,查询学生的选课情况,其中包括学生学号、姓名、性别、课程号、课程名、成绩等信息,并且调用此存储过程,显示学号为“S001”的学生信息。

第5题:使用OUTPUT的返回参数编写存储过程proc_stu,返回三个参数@name 、@coursename和@score代表了学生姓名和课程名和成绩。

并调用此过程。

第6题:创建一个用于向课程表中插入记录的存储过程add_course并调用存储过程插入数据.。

数据库作业储存过程

数据库作业储存过程

实验11 存储过程1.实验目的(1)掌握使用SQL Server管理平台和Transact-SQL语句创建存储过程、执行存储过程、修改存储过程、删除存储过程的用法。

(2)理解使用SQL Server管理平台和Transact-SQL语句查看存储过程定义、重命名存储过程的用法。

2.实验内容及步骤请先附加studentsdb数据库,然后完成以下实验。

(1)CREATE PROCEDURE st_gASBEGINSELECT x.学号,x.姓名,y.分数FROM student_info x ,grade yWhere x.学号=y.学号END该程序完成的功能是创建一个存储过程,储存分数。

(2)设计一个存储过程proc_grade完成这样的功能:查询grade表中课程编号为’k002’的学号、分数信息,并使存储过程不能使用sp_helptext查看(即加密),请编写程序实现。

答:create procedure proc_gradewith encryptionasbeginselect grade.学号,grade.分数from gradewhere grade.课程编号='k002'end(3)修改存储过程proc_grade,查询grade表中课程编号为’k001’的学号、分数信息,去掉proc_grade加密性,使其在运行时重新编译。

答:alter procedure proc_gradeasbeginselect grade.学号,grade.分数from gradewhere grade.课程编号='k001'end(4)在student_info 表中增加一列名为“手机号”,数据类型char(11)。

设计一个存储过程proc_tel,查询student_info表中末尾数字为5的手机号码。

答:alter table student_infoadd手机号char(11)create procedure proc_telasbegininsert into student_info(学号,手机号)values (’‘,’‘)select手机号from student_infowhere手机号like'%5'endexec proc_tel(5)设计一个存储过程proc_avg,输出grade表中每个学生的平均成绩。

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

实验9-10存储过程以下是为大家整理的实验9-10存储过程的相关范文,本文关键词为实验,9-10,存储,过程,实验,存储,过程,实践,目的,理,您可以从右上方搜索框检索更多相关文章,如果您觉得有用,请继续关注我们并推荐给您的好友,您可以在教育文库中查看更多范文。

实验9存储过程一、实践目的:1.理解存储过程的概念,了解存储过程的类型2.掌握创建各种存储过程的方法3.掌握执行存储过程的方法4.掌握查看、修改、删除存储过程的方法二、实践内容存储过程是一系列预先编辑好的、能实现特定数据操作功能的sQL代码集,它与特定的数据库相关联,存储在sQLserver服务器上。

用户可以象使用自定义函数那样重复调用这些存储过程,实现它所定义的操作。

创建用户自定义的存储过程既可以用T-sQL语句,也可以用企业管理器。

一般来说,创建一个存储过程应该按以下步骤进行:1)编写sQL语句2)测试sQL语句是否正确,并能实现功能要求3)若得到的结果符合预期要求,则按照存储过程的语法,创建该存储过程4)执行该存储过程,验证其正确性1.使用T-sQL语句创建存储过程(1)创建不带参数的存储过程创建一个从student表查询班级号为g99402班的学生资料的存储过程proc_1use学生管理gocReATepRoceDuReproc_1AsseLecTstudent_id,student_namefromstudentwhereclass_id=’g99402’在查询分析器中执行如下语句,可以完成存储过程的定义功能execproc_1(2)创建带参数的存储过程创建一个从student表查询学生资料的存储过程proc_2,要查询的班级号通过执行该语句中的输入参数传递给存储过程use学生管理gocReATepRoceDuReproc_2@class_nochar(6)AsseLecTstudent_id,student_namefromstudentwhereclass_id=@class_no 在查询分析器中执行如下语句,可以完成存储过程的定义功能execproc_2‘g99402’其中99402为要传递给存储过程proc_2的输入参数,也就是要查询的班级资料(3)创建带输出参数的存储过程创建一个从course表查询某一门课程考试成绩总分的存储过程proc_3use学生管理gocReATepRoceDuReproc_3@course_nochar(10)@sum_gradeintouTpuTAsseLecT@sum_grade=sum(grade)fromcoursewherecourse_id=course_no 2.使用T-sQL查看、修改和删除存储过程(1)查看存储过程sp_helptextproc_1(2)查看有关存储过程的信息使用系统存储过程sp_help可以查看有关存储过程的信息sp_helpproc_2(3)修改存储过程将存储过程proc_1修改为查询班级号为g99402班的学生资料use学生管理34goALTeRpRoceDuReproc_1AsseLecTstudent_id,student_namefromstudentwhereclass_id=’g99402’(4)删除存储过程将存储过程proc_1删除DRoppRocproc_1 3.使用企业管理器创建、查看、修改和删除存储过程(1)创建存储过程创建一个从sTuDenT表中查询班级为g99403班的学生资料的存储过程proc_51)进入企业管理器,展开相应的服务器组和相应的服务器节点。

2)按顺序展开【数据库】节点、要创建存储过程的数据库(学生管理)、再展开【存储过程】子节点。

3)用鼠标右键单击【存储过程】,在系统弹出的快捷菜单中,单击【新建存储过程】,出现【新建存储过程】窗口4)在上面窗口中,直接输入下面语句:cReATepRoceDuReproc_5As seLecTstudent_id,student_namefromstudentwhereclass_id=’g99403’单击【语法检查】按钮检查sQL语句是否存在语法错误。

单击【确定】按钮,就可以在数据库中建立了新的存储过程proc_5。

(2)查看、修改存储过程查看存储过程pRoc_5,并将其功能修改为从student表查询班级号为g99403班的男生资料。

使用企业管理器查看存储过程的方法如下:1)展开服务器组,然后展开服务器2)展开【数据库】文件夹、展开存储过程所属的数据库,然后单击【存储过程】文件夹353)在详细信息窗格中,用鼠标右键单击需要查看的存储过程,然后单击【属性】命令。

也可以直接双击存储过程4)该存储过程的定义代码显示在【存储过程属性】窗口文本框中,将seLecT语句修改为:seLecTstudent_id,student_namefromstudentwhereclass_id=’g99403’AnDsex=15)单击【确定】按钮,完成对存储过程的查看修改(3)删除存储过程将存储过程proc_5删除按如下步骤删除存储过程1)展开服务器组,然后展开服务器2)展开【数据库】文件夹、展开存储过程所属的数据库,然后单击【存储过程】文件夹3)在详细信息窗格中,用鼠标右键单击需要查看的存储过程,然后单击【删除】命令。

4)若要查看删除后,此存储过程对数据库的影响,单击【显示相关性】命令即可。

5)单击【全部除去】按钮,即可删除proc_5的存储过程。

36实验10触发器一、实验目的:通过本实验:1)理解触发器的概念及类型2)理解触发器的功能与工作原理3)掌握创建、更改、删除触发器的方法4)掌握利用触发器维护数据完整性的方法二、实验内容触发器(Trigger)是一种实施复杂数据完整性的特殊存储过程,在对表或视图执行upDATe、InseRT、DeLeTe语句时自动触发执行,以防止对数据进行不正确、未授权或不一致的修改。

它可以向调用存储过程一样由用户直接调用执行。

触发器主要用于保护表中数据,实现数据的完整性。

触发器也有三种类型:插入触发器、删除触发器、更新触发器创建触发器可以用T-sQL语句,也可以用企业管理器。

1.使用T-sQL语句创建触发器(1)创建插入触发器为表student_course创建一个插入触发器,当向表student_course 插入数据时,如果成绩grade大于等于60分,该学生就能得到相应的学分,否则,该学生不能得到相应的学分。

useJwgLgoIFexIsTs(seLecTnameFRomsysobjectswheRetype='TR'AnDname='credit_in sert')DRopTRIggeRcredit_insertgocReATeTRIggeRcredit_insertonstudent_courseFoRInseRTAsDecLARe@credit0TInYInT37以下是为大家整理的实验9-10存储过程(2)的相关范文,本文关键词为实验,9-10,存储,过程,实验,存储,过程,实践,目的,理,您可以从右上方搜索框检索更多相关文章,如果您觉得有用,请继续关注我们并推荐给您的好友,您可以在教育文库中查看更多范文。

DecLARe@grade0TInYInTseLecT@grade0=inserted.gradeFRominsertedseLecT@credit0=course.cre ditFRomcourse,insertedwheRecourse.course_id=inserted.course_idIF(@ grade>=60)begInupDATestudent_courseseTstudent_course.credit=@creditFRomstudent_c ourse,insertedwheRestudent_course.course_id=inserted.course_idAnDstudent_course. student_id=inserted.student_idenDgo(2)创建删除触发器为表student创建一个删除触发器,当删除表student中一个学生的资料时,将表student_course中相应的成绩数据删除掉。

useJwgLgoIFexIsTs(seLecTnameFRomsysobjectswheRetype+'TR'AnDname='stud_del ete')DRopTRIggeR'stud_delete'gocReATeTRIggeRstud_deleteonstudentFoRDeLeTeAsDecLeARe@stud_idchAR(8)seLecT@stud_id=deleted.student_idFRomdeletedDeLeTeFRomstudent_coursewheRestudent_course.student_id=@stud_id (3)创建更新触发器1)为表student_course创建一个更新触发器,当更改表student_course的成绩数据时,如果成绩grade由原来的小于60分改为大于60分,该学生就能得到38相应学分,如果由原来的大于等于60分改为小于60分,则该学生相应的学分改为0IFexIsTs(seLecTnameFRomsysobjectswheRetype+'TR'AnDname='credit_u pdate')DRopTRIggeR'credit_update'gocReATeTRIggeRcredit_updateonstudent_courseFoRupDATeAsDecLARe@credit0TInYInTDecLARe@grade0TInYInTseLecT@grade0=inserted.gradeFRominsertedseLecT@credit0=course.cre ditFRomcourse,insertedwheRecourse.course_id=inserted.course_idIF(@ grade>=60)begInupDATestudent_courseseTstudent_course.credit=@creditFRomstudent_c ourse,insertedwheRestudent_course.course_id=inserted.course_idAnDstudent_course. student_id=inserted.student_idenDeLsebegInupDATestudent_courseseTstudent_course.credit=0FRomstudent_course,i nsertedwheRestudent_course.course_id=insert.course_idAnDstudent_course.st udent_id=insert.student_idenDgo2)为表student创建一个更新触发器,当更改表student中某学号学生的姓名时,39同时将student_course表中该学生的姓名更新。

相关文档
最新文档