11计科 张小华 数据库实验十一 存储过程与触发器
- 格式:doc
- 大小:317.61 KB
- 文档页数:9
存储过程及触发器实验报告实验目的:1、了解存储过程及其应用;2、了解触发器及其应用;3、掌握使用存储过程及触发器完成数据操作的方法。
实验过程:1、存储过程存储过程是指一组为了完成特定功能的SQL语句集合。
存储过程可以接收传入参数并返回处理结果。
存储过程的好处是可以减少网络流量,提高性能,增加安全性。
在本次实验中,我们将学习如何创建存储过程。
首先,在MySQL中打开MySQL Workbench,进入我们的实验数据库。
然后我们就可以创建一个存储过程了。
创建存储过程的语法如下:CREATE PROCEDURE procedure_name ()BEGIN-- SQL statementsEND;在这个语法中,procedure_name是我们想要创建的存储过程的名称。
在BEGIN和END 之间,我们可以输入一组SQL语句,这些语句将组成存储过程的主体内容。
我们可以以一个创建一个简单的存储过程作为例子,这个存储过程的作用是输出一条信息。
我们将这个存储过程命名为print_message。
在上面的语句中,我们定义了一个存储过程,它被命名为print_message。
它只包含一条SELECT语句,这条语句将输出Hello, World!这个字符串。
创建完存储过程之后,我们可以通过CALL语句来调用它:CALL print_message();执行这个语句后,我们将会看到Hello, World!这个字符串输出到屏幕上。
2、触发器触发器是一种被动的对象,它是由数据库管理系统在数据表上自动执行的一些操作。
当数据表中发生某些指定的操作时,触发器就会被调用执行。
触发器通常用于数据表中的数据变更操作,比如插入、更新和删除。
在本次实验中,我们将学习如何创建和使用触发器。
在MySQL中创建触发器的语法如下:CREATE TRIGGER trigger_name{BEFORE | AFTER} trigger_event ON table_nameFOR EACH ROW trigger_body;在这个语法中,trigger_name是我们想要创建的触发器的名称。
数据库设计中的存储过程与触发器数据库设计在软件开发中起着至关重要的作用,它决定着数据的结构、存储和访问方式。
在数据库设计中,存储过程和触发器是两个常用的技术,它们能够帮助我们更好地实现数据管理和处理的目标。
本文将重点探讨数据库设计中的存储过程与触发器,并介绍它们的作用、使用场景和优缺点。
一、存储过程存储过程是一组预编译的SQL语句集合,可以在数据库服务器上进行执行。
它们通常用于实现复杂的数据库操作、数据验证和业务逻辑。
存储过程可以被视为一种封装了的数据库操作,通过调用存储过程,我们可以实现统一的数据处理逻辑,提高代码的复用性和可维护性。
在数据库设计中,存储过程可以起到以下几个作用:1. 数据的一致性和完整性控制:存储过程可以通过在执行之前进行数据验证、规范化和自动修复,保证数据的一致性和完整性。
2. 事务管理:存储过程可以帮助我们实现复杂的事务处理,通过定义事务的边界、控制事务的提交和回滚,确保数据的一致性和可靠性。
3. 数据库性能优化:存储过程可以通过预编译和优化查询语句等技术手段,提高数据库的访问效率和响应速度。
存储过程的使用场景多样,例如在用户注册时进行用户名的唯一性验证,在订单提交时计算订单总价等。
然而,存储过程并非适合所有情况,它也存在一些缺点,如可移植性差、调试困难等。
因此,在使用存储过程时应权衡其利弊,并根据具体需求做出选择。
二、触发器触发器是与数据库表相关联的一种特殊对象,它在表上的插入、更新或删除操作时被自动触发执行。
触发器可以用于实现诸多数据库功能,如数据验证、派生数据和审计跟踪等。
触发器的主要作用如下:1. 数据验证和约束:触发器可以在插入、更新或删除数据之前进行数据验证和约束,确保数据的完整性和一致性。
2. 派生数据:通过触发器,可以自动计算和派生某些数据,避免手动计算和维护数据的复杂性。
3. 审计跟踪:触发器可以在数据操作时记录相关的变更信息,以实现审计和追踪功能,用于安全和合规需求。
存储过程与触发器实验报告一、引言存储过程和触发器是数据库中常用的高级功能,它们能够提高数据库的性能、数据一致性和安全性。
本实验报告将详细介绍存储过程和触发器的概念、用途以及实际应用。
二、存储过程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.掌握触发器的使用。
2.掌握存储过程的创建、修改和删除;掌握存储过程的执行。
具体内容如下:
(1)触发器的使用
①在数据表“学生”中创建update触发器,级联更新“选课”表相应的记录。
②利用Delete表,将“学生”表中被删除的记录存储到“学生备份”表中,以供日后的数据查询和分析。
(2)存储过程的使用
①在Student数据库中,建立一个存储过程,要求统计计算机系学生的人数,并将人数返回给用户。
②在Student数据库中,建立一个存储过程,要求
●统计成绩大于等于90分学生的人数;
●统计成绩大于等于80分并且小于90分学生的人数,并将人数返回给用户。
三、实验报告要求
1.写出实验的内容与完成的情况。
2.实验中出现的问题和解决方法。
四、注意事项
1.注意存储过程中参数的设置。
2.注意触发器的执行。
五、思考题
1 触发器和存储过程何时执行?
2 触发器能否带参数?。
数据库存储过程与触发器的说明书本文将详细介绍数据库存储过程与触发器的相关概念、用途以及使用方法,帮助读者全面了解这两个在数据库管理中起到重要作用的功能。
一、数据库存储过程1. 概念数据库存储过程是一组预定义并存储在数据库中的SQL语句集合,可以作为一个单元一次性调用。
存储过程允许将复杂的操作封装在一个单独的单元中,以提高数据库的性能和可维护性。
2. 用途数据库存储过程具有如下几个主要用途:- 提高数据库性能:存储过程可以将一组相关的SQL语句集合在一起,减少网络开销和服务器负载,从而提高数据库的性能。
- 简化应用程序开发:通过调用存储过程,应用程序可以直接访问数据库中的数据,简化了开发过程,并提高了代码的重用性。
- 数据库安全性管理:存储过程可以实现对数据库的访问权限控制,保护敏感数据的安全性。
3. 使用方法在使用数据库存储过程时,一般需要进行以下步骤:- 创建存储过程:使用SQL语句定义并创建存储过程,包括输入参数、输出参数以及所需的SQL语句。
- 调用存储过程:通过调用存储过程的名称,传递参数并执行对应的SQL语句。
- 优化存储过程:可以通过对存储过程进行调优,如添加索引、使用临时表等方法,提高存储过程的执行效率。
二、数据库触发器1. 概念数据库触发器是与数据库表相关联的特殊类型的存储过程,它在特定事件发生时自动执行。
触发器通常用于实现数据的完整性约束、审计跟踪、数据更新等功能。
2. 用途数据库触发器具有如下几个主要用途:- 数据完整性约束:通过在触发器中定义一系列条件,可以确保数据的完整性,例如,要求插入操作满足某些条件才能成功。
- 记录审计:通过在触发器中记录特定事件的相关信息,如用户的操作、时间等,可以实现数据的审计跟踪功能。
- 数据更新控制:在触发器中可以定义数据的变化规则,如当某一列的值发生变化时,自动更新其他相关列的值。
3. 使用方法使用数据库触发器时,一般需要进行以下步骤:- 创建触发器:使用SQL语句定义触发器的名称、触发时间、触发事件以及触发操作。
存储过程与触发器实验报告本实验旨在探究存储过程与触发器的概念、作用、使用范围和创建过程,并且通过编写相关的示例代码来展示它们的实际应用。
一、实验原理1. 存储过程存储过程是一组预定义好的 SQL 语句,可以重复使用并且可以直接被调用。
它类似于程序中的函数,可以接受参数、返回值、流程控制等。
2. 触发器触发器是与数据库表相关的事件响应机制,可以在数据库表上定义一些触发条件,当满足这些条件时就会触发执行一些操作,比如插入、更新或删除数据。
二、实验步骤1. 存储过程的创建与使用(1)创建一个用于统计某个用户的订单数量的存储过程。
```DELIMITER //CREATE PROCEDURE `getOrderCount`(IN p_userid INT, OUTp_count INT)BEGINSELECT COUNT(*) INTO p_count FROM orders WHERE user_id = p_userid;END//DELIMITER ;```(2)调用这个存储过程,并输出结果。
```CALL getOrderCount(123, @count);SELECT @count AS 'order_count';```2. 触发器的创建与使用(1)创建一个在用户表中插入新记录时自动生成一个账户记录的触发器。
```DELIMITER //CREATE TRIGGER `insert_user_account` AFTER INSERT ON `users` FOR EACH ROWBEGININSERT INTO accounts (user_id, balance) VALUES (NEW.id, 0);END//DELIMITER ;```(2)在用户表中插入一条新记录,触发器会自动执行并在账户表中生成一条新记录。
```INSERT INTO users (name, email) VALUES ('Alice','***************');SELECT * FROM accounts WHERE user_id =LAST_INSERT_ID();```三、实验结论通过实验我们发现,存储过程可以将一些常用的 SQL 语句封装为一个可以重复调用的函数,使得程序更加简洁和高效。
数据库存储过程与触发器1. 引言数据库存储过程和触发器是数据库中常用的两种功能,它们可以通过在特定情况下自动执行一系列的操作,极大地提高了数据库系统的灵活性和功能性。
本文将介绍数据库存储过程和触发器的概念、作用和用法,并且以示例的方式详细展示它们在实际应用中的应用场景。
2. 数据库存储过程2.1 概念数据库存储过程是一组预定义的操作序列,它们以原子的方式执行,可以被多个应用程序调用。
存储过程通常用于处理复杂的业务逻辑、数据处理和数据验证等任务。
存储过程可以在数据库系统中被创建、编辑和执行,可以接受参数来灵活地适应不同的需求。
2.2 作用数据库存储过程具有以下几个重要的作用:•提高性能:存储过程在数据库服务器上执行,可以减少网络传输开销,提高数据库的响应速度。
•简化开发:存储过程将一些常用的操作封装起来,开发者可以通过简单的调用存储过程来完成复杂的业务逻辑,减少了开发工作量。
•保证数据的一致性:存储过程可以通过事务控制来确保数据的一致性和完整性。
2.3 用法数据库存储过程的用法如下:1.创建存储过程:使用CREATE PROCEDURE语句来创建存储过程,并定义输入参数、输出参数和过程体。
CREATE PROCEDURE procedure_name [ (parameter1, parameter2, ...)][RETURNS return_type]BEGIN-- 过程体END;2.执行存储过程:使用CALL语句来执行存储过程,并传递参数。
CALL procedure_name (parameter1, parameter2, ...);3.删除存储过程:使用DROP PROCEDURE语句来删除存储过程。
DROP PROCEDURE procedure_name;4.查看存储过程的定义:使用SHOW PROCEDURE STATUS语句来查看数据库中的存储过程。
SHOW PROCEDURE STATUS;3. 数据库触发器3.1 概念数据库触发器是与表相关联的特殊类型的存储过程,它们在表上的特定操作(插入、更新、删除)发生时自动执行。
数据库存储过程与触发器的设计与使用指南数据库存储过程和触发器是关系型数据库中非常重要的功能组件,它们可以用于处理和管理数据库的数据和操作。
本文将为读者提供数据库存储过程和触发器的设计与使用指南,从原理、设计步骤、语法特点以及使用注意事项等方面进行介绍。
一、数据库存储过程的设计与使用指南存储过程是一组预编译的SQL语句,可以作为一个单元来执行。
它具有以下的设计与使用指南。
1. 制定需求和功能:在设计存储过程前,首先明确需求和功能。
存储过程通常用于复杂的业务逻辑和数据操作,比如批量插入、更新或删除数据、查询数据等。
2. 编写SQL语句:根据需求和功能编写SQL语句,包括查询语句、更新、插入以及删除操作等。
可以使用工具或编程语言来编写SQL语句,比如MySQL的SQL语言。
3. 创建存储过程:使用数据库管理工具创建存储过程。
将编写的SQL语句嵌入到存储过程中,并指定存储过程的名称、参数、返回值等。
4. 调用存储过程:可以通过存储过程的名称和传入的参数来调用存储过程。
存储过程可以像普通的SQL语句一样执行,并返回相应的结果。
5. 测试和优化:在使用存储过程之前,需要进行测试和优化。
通过对存储过程的执行时间和资源消耗等进行监测和统计,进行性能优化和调整。
6. 安全控制:存储过程通常包含敏感数据的访问和操作,因此需要进行安全控制。
可以通过数据库的权限控制机制,设置存储过程的执行权限,限制非授权用户的访问。
7. 文档记录:为了方便团队的协作和沟通,建议对编写的存储过程进行文档记录。
包括存储过程的名称、目的、参数说明、返回值以及示例等。
这样可以提高团队的开发效率和协作质量。
二、数据库触发器的设计与使用指南触发器是在数据库表中的操作(插入、更新或删除)发生时自动执行的一段代码。
它具有以下的设计与使用指南。
1. 确定触发时机:在设计触发器前,需要明确触发的时机。
触发器包括插入之前、插入之后、更新之前、更新之后、删除之前和删除之后等时机。
实验十一存储过程与触发器一、实验目的及要求本实验主要目的是掌握存储过程的创建及使用方式、触发器的创建,具体要求有:理解存储过程的概念及类型,深刻理解存储过程的优点。
掌握创建各种存储过程的方法,掌握调用存储过程的方法。
理解触发器的概念与类型。
理解触发器的功能及工作原理。
掌握创建、更改、删除触发器的方法。
理解利用触发器维护数据完整性的方法。
二、实验原理及背景知识(一)存储过程知识存储过程是一种数据库对象,将执行计划存储在数据库服务器中。
它的运行速度比独立运行同样的程序要快。
1、存储过程类型(1)系统存储过程存储在master数据库中,其名称以sp_为前缀。
可以在其他数据库中调用。
(2)用户自定义存储过程由用户创建并能完成某一特定功能的存储过程,也称本地存储过程。
2、创建存储过程存储过程的三个组成部分:(1)所有的输入参数以及传给调用者的输出参数。
(2)被执行的针对数据库的操作语句,包括调用其他存储过程的语句。
(3)返回给调用者的状态值,以指明调用是成功还是失败。
3、T-SQL创建存储过程的基本语法格式CREATE PROCEDURE]存储过程名称参数定义AS SQL 语句(二)触发器知识触发器是一种特殊类型的存储过程,主要通过事件进行触发执行的。
可以实现由主键和外键所不能保证的参照完整性和数据一致性;强化约束;跟踪变化;级联运行;存储过程的调用等功能。
1、触发器的种类(1)AFTER触发器:只有对表执行某一操作后,才能被触发。
可以为表的同一操作定义多个触发器,其触发次序可使用sp_settriggerorder 来完成。
(2)INSTEAD OF触发器:不执行其触发操作,仅执行触发器本身,对同一触发操作只能定义一个INSTEAD OF触发器。
2、Inserted 和Deleted 临时表插入一行时,Inserted 表保存了一份插入行的拷贝。
删除一行时,Deleted 表保存了删除行的拷贝。
更新一行时,Inserted 表中保存了一份新行的拷贝,Deleted 表中保存了一份旧行的拷贝。
南昌航空大学实验报告二00 年月日课程名称:数据库概论实验名称:数据库存储过程与触发器班级:122031 姓名:同组人:指导教师评定:签名:一、实验环境1.Windows2000或以上版本;2.SQLServer 2005。
二、实验目的熟悉不同数据库的存储过程和触发器,重点实践SQL Server2005,掌握SQL Server2005中有存储过程与触发器的相关知识。
三、实验要求完成实验指导书中p115-7和p132 -4。
四、实验步骤及参考源代码1.创建与执行存储过程create procedure C_P_Proc asselect distinct o,cna,pna,numfrom paper,customer,cpwhere o=o and paper.pno=cp.pno and cna='李涛' or cna='钱金浩' goexecute C_P_Proc2.删除存储过程drop procedure C_P_Proc3.创建插入触发器create trigger TR_PAPER_I ON PAKER12203125FOR INSERT ASDECLARE @appr floatDECLARE @apno intSELECT @appr=ppr,@apno=pno from insertedbeginif @appr<0 or @appr is nullbeginraiserror('报纸的单价为空或小于!',16,1)update paper set ppr=10where paper.pno=@apnoendend4.创建删除触发器create Trigger TR_PAPER_D on PAKER12203125after delete asdeclare @ipno char(6)declare @icount int;select @icount= count(*) from deleted,cpwhere deleted.pno=cp.pnoif @icount>=1beginselect @ipno=pnofrom deletedraiserror('级联删除cp表中的数据',16,1)delete from cp where cp.pno=@ipnoend5.创建修改触发器create trigger TR_PAPER_U ON PAKER12203125for update asdeclare @ippr floatselect @ippr=ppr from insertedif @ippr<0 or @ippr is nullbeginraiserror('输入单价不正确',16,1)rollback transactionend6. 分别对PAKER12203125表进行插入、修改、删除操作insert into PAKER12203125 (pno,pna,ppr)values('000006','江西日报','1') insert into PAKER12203125 (pno,pna,ppr)values('000007','江南都市报','15.5') delete from PAKER12203125 where pno='000001'update PAKER12203125 set ppr=12.5 where pno='000002'update PAKER12203125 set ppr=-2 where pno='000004'五、实验结果123.4.56六、实验体会试验过后,巩固了自己在课堂上所学的知识,并加深了记忆与了解,对以后的使用有很大作用在实验过程中,遇到一些困难,经过自己不断查找书籍并询问老师来解决问题,提高了自己的逻辑思维能力和动手能力。
存储过程与触发器实验报告存储过程与触发器实验报告概述:本实验旨在探究数据库中存储过程与触发器的概念、作用以及使用方法。
通过编写实例代码并进行实验,深入理解存储过程与触发器在数据库管理系统中的重要性和应用场景。
一、存储过程存储过程是一组预定义的SQL语句集合,可以被多次调用。
存储过程通常用于执行一系列复杂的数据库操作,如数据的插入、更新、删除等。
它们可以被视为一种封装了业务逻辑的数据库对象,提供了更高效、更安全的数据处理方式。
在实验中,我首先创建了一个名为"AddEmployee"的存储过程,用于向员工表中插入新的员工信息。
该存储过程接受参数,包括员工姓名、性别、年龄等。
在存储过程中,我使用了INSERT INTO语句将参数值插入到员工表中。
通过调用该存储过程,可以方便地插入新员工的信息,减少了编写重复SQL语句的工作量。
二、触发器触发器是与数据库表相关联的特殊类型的存储过程,当表中的数据发生变化时,触发器会自动执行相应的操作。
触发器可以在数据的插入、更新、删除等操作前后触发,用于实现数据的自动验证、补充以及其他业务逻辑的处理。
在本次实验中,我创建了一个名为"UpdateStock"的触发器,用于在产品表中更新库存信息时自动更新库存变动记录表。
当产品表中的库存字段发生变化时,触发器会自动将相关信息插入到库存变动记录表中。
这样,无论是手动更新库存还是通过其他方式更新库存,库存变动记录都能够及时准确地被记录下来,方便后续的数据分析和追溯。
三、实验结果与总结通过本次实验,我深入学习了存储过程与触发器的概念、作用和使用方法。
通过编写实例代码并进行实验验证,我进一步认识到存储过程与触发器在数据库管理系统中的重要性和应用场景。
存储过程的使用可以提高数据库操作的效率和安全性,尤其适用于需要执行复杂业务逻辑的场景。
通过将一系列SQL语句封装成存储过程,可以减少网络传输的开销,提高数据库操作的性能。
实验名称:存储过程与触发器实验目的:掌握SQLSERVER存储过程与触发器的定义、调用操作数据库结构关系:语法规定:(1)存储过程定义语法:CREATE PROC 过程名@parameter 参数类型……@parameter 参数类型outputASBegin命令块End利用TSQL调用存储过程:Execute 过程名[参数值,……][Output]如果没有参数,直接调用过程名(2)创建事后触发器的语法:CREATE TRIGGER 触发器名ON 表名For Insert [,Update,Delete] AsBegin命令块End(3)创建替代触发器的语法:CREATE TRIGGER 触发器名ON 表名Instead of Insert [,Update,Delete] AsBegin命令块End实验内容:(一)存储过程(1)创建带输入参数的存储过程,输入查询的工资范围,输出查询到的职工信息Create proc Myproc1@mingzint,@maxgzintasselect * from 职工表where 工资between @mingz and @maxgz 调用该过程execute Myproc1 1000,4000(2)使用Transact-SQL语言创建带输入输出参数的存储过程。
输入仓库号,输出该仓库的职工信息、职工最高工资、最低工资Create proc Myproc2@cangkuhaovarchar(50),@maxgzint output,@avggzint outputasbeginselect * from 职工表where 仓库号=@cangkuhaoSelect @maxgz=max(工资) from 职工表where 仓库号=@cangkuhaoSelect @avggz=avg(工资) from 职工表where 仓库号=@cangkuhaoEnd调用存储过程。
西安思源学院数据库实验报告
实验名称:存储过程与触发器
班级:11计算机科学与技术学号:111102020104
姓名:张小华
指导教师:王英强
实验时间:2013年5月
成绩:
实验11存储过程与触发器
1.实验目的
(1)掌握创建存储过程和触发器的方法和步骤。
(2)掌握存储过程和触发器的使用方法。
2.实验准备
(1)了解存储过程和触发器的基本概念和类型。
(2)了解创建存储过程和触发器的SQL语句的基本用法。
(3)了解查看、执行、修改和删除存储过程的SQL语句的用法。
(4)了解查看、修改和删除触发器的SQL语句的用法。
3.实验内容
(1)使用存储过程:
①使用student数据库中的“学生”、“课程注册”、“课程”、表创建一个不带参数的存储过程(kcxd)。
该存储过程的功能是:显示所有学生的学号、选修的课程名和课程成绩。
.执行kcxd存储过程,显示所有学生的学号、选修课程和课程成绩。
源代码:
use student
go
create proc kcxd
as
select学生.姓名,学生.学号,课程名,成绩
from学生,课程注册,课程
where学生.学号=课程注册.学号and课程.课程号=课程注册.课程号
go
执行kcxd代码:
use student
go
exec kcxd
go
②使用student数据库中的“学生”、“课程注册”、“课程”、表创建一个不带参数的存储过程(cjxc)。
该存储过程的功能是:当任意给定一个学生的姓名时,将显示该学生的学号,选修的课程名和课程成绩,若没有给定学生的姓名,则显示所有学生的学号、选修的课程名和课程成绩。
.执行cjcx存储过程,查询“周红梅”的学号、选修课程和课程成绩。
.执行cjcx存储过程,不指定参数值。
.使用系统存储过程sp_helptxt查看存储过程cjcx的文本信息。
源代码:
use student
go
create proc cjkx
@student_name char(10)
as
if @student_name=''
begin
select学生.姓名,学生.学号,课程名,成绩
from学生,课程注册,课程
where学生.学号=课程注册.学号and
课程.课程号=课程注册.课程号
end
else
begin
select学生.姓名,学生.学号,课程名,成绩
from学生,课程注册,课程
where学生.学号=课程注册.学号and
课程.课程号=课程注册.课程号
and学生.姓名=@student_name
end
go
执行cjcx存储过程,查询“周红梅”的学号、选修课程和课程成绩代码如下:
use student
go
exec cjkx '周红瑜'
go
执行cjcx存储过程,不指定参数值
代码如下:
use student
go
exec cjkx ''
go
使用系统存储过程sp_helptxt查看存储过程cjcx的文本信息代码如下:
use student
go
exec sp_helptext cjkx
go
③使用student数据库中的“教师”、“教师任课”表创建一个带参数的存储过程(jsrk)。
该存储过程的功能是:当任意输入一个教师的姓名时,将由输出参数返回该教师的任课数量。
. 执行jsrk存储过程,查询“张斌”的任课数。
创建存储过程jsrk:
use student
go
create proc jsrk
@js_name varchar(20)
as
select count(课程号)as该教师任课数量
from教师,教师任课
where教师.姓名=@js_name and
教师.教师编号=教师任课.教师编号
go
执行jsrk存储过程,查询“张斌”的任课数
代码如下:
use student
go
exec jsrk '张斌'
go
(2)使用触发器:
①在jifei数据库中建立一个名为insert_sjkh的INSERT触发器,存储在“上
机记录”表中。
该触发器的作用是:当用户向“上机记录”表中插入记录时,如果插入了“上机卡”表中没有的上机号,则提示用户不能插入记录,否则提示记录插入成功。
创建代码:
use jifei
go
create trigger insert_sjkh
on上机记录
for insert
as
if(select上机卡.上机号from上机卡,inserted
where上机卡.上机号=inserted.上机号)>0
begin
print'记录插入成功';
end
else print'用户不能插入记录!';
rollback transaction--回滚﹐避免加入
go
在jifei数据库中建立一个名为dele_sjh的DELETE触发器,该触发器的作用是在删除“上机卡”表中记录的同时自动删除“上机记录”表中的相应上机号的上机记录。
创建代码:
use jifei
go
create trigger dele_sjh
on上机卡
for delete
as
delete上机记录where上机号
in(select上机号from deleted)
go
②在jifei数据库中建立一个名为update_sjh的UPDATE触发器,该触发器的
作用是禁止更新“上机卡”表中的上机号的内容。
创建代码:
use jifei
go
create trigger update_sjh
on上机卡
for update
as
if update(上机号)
begin
print'该信息不可随便改动!'
rollback transaction
end
go
③在jifei数据库中建立一个名为update_sjye的UPDATE触发器,该触发器的
作用是当上机记录表中的上机状态由True变为False时,自动修改上机卡表的相应上机卡的余额,修改方法为:原有余额-(上机时间*机时单价)(机时单价以1.00元/小时计)。
(选作)
④删除以上建立的所有触发器。
选中要删除的触发器→右键单击→选择删除→点击确定。