存储过程与触发器的应用

一、实验目的

1、掌握创建存储过程的方法和步骤;

2.掌握存储过程的使用方法;

3.掌握创建触发器的方法和步骤;

4.掌握触发器的使用方法。

二、实验内容

1、存储过程的创建、执行和删除;

2、触发器的创建、执行和删除。

三、实验步骤

1、存储过程的创建、执行和删除。

1)使用S_C数据库中的S表、C表、SC表创建一个带参数的存储过程—cjjicx。该存储过程的作用是:
当任意输入一个学生的姓名时,将从三个表中返回该学生的学号、选修的课程名称和课程成绩。

cjjicx的创建语句:

CREATE PROCEDURE cjjicx

@name char(6)

AS

BEGIN

SELECT S.sno, C.cname, SC.grade FROM S, C, SC

WHERE S.sname = @name AND S.sno = SC.sno AND SC.cno = C.cno

END

2)执行cjjicx存储过程,查询“刘晨”的学号、选修课程和课程成绩。

执行语句:

EXEC cjjicx @name = ‘刘晨‘

结果描述:

3)使用系统存储过程sp_helptext查看存储过程cjjicx的文本信息。

查看结果描述:

sp_helptext cjjicx

4)使用S-C数据库中的S表,为其创建一个加密的存储过程—jmxs。该存储过程的作用是:当执行该
存储过程时,将返回计算机系学生的所有信息。

jmxs创建语句:

CREATE PROCEDURE mxs WITH ENCRYPTION

AS

BEGIN

SELECT * FROM S

END

5)执行jmxs存储过程,查看计算机系学生的情况。

执行语句:

EXEC mxs

结果描述:

SP_HELPTEXT mxs

6)删除jmxs存储过程。

删除语句:

DROP PROCEDURE mxs

2、触发器的创建、执行和删除。

1)在S_C数据库中建立一个名为insert_xh的INSERT触发器,存储在SC表中。该触发器的作用是:
当用户向SC表中插入记录时,如果插入了在S表中没有的学生学号sno,则提示用户不能插入记录,
否则提示记录插入成功。

insert_xh的创建语句:

CREATE TRIGGER insert_xh ON SC

AFTER INSERT

AS

BEGIN

IF(SELECT COUNT(*) FROM inserted JOIN S ON S.sno = inserted.sno) = 0

BEGIN

ROLLBACK TRAN

PRINT ‘用户不能插入记录‘

END

ELSE

PRINT ‘记录插入成功‘

END

2)为S_C数据库中的S表创建一个名为dele_stu的DELETE触发器,该触发器的作用是禁止删除S
表中的记录。

dele_stu的创建语句:

CREATE TRIGGER dele_stu ON S

AFTER DELETE

AS

BEGIN

ROLLBACK TRAN

PRINT ‘禁止删除‘

END

3)为S_C数据库中的SC表创建一个名为update_grade的UPDATE触发器,该触发器的作用是禁止更
新SC表中的grade字段的内容。

update_grade的定义语句:

CREATE TRIGGER update_grade ON SC

FOR INSERT, UPDATE

AS

DECLARE @grade1 INT;

DECLARE @grade2 INT;

SELECT @grade1 = inserted.grade FROM inserted

SELECT @grade2 = deleted.grade FROM deleted

BEGIN

IF(@grade1 != @grade2)

BEGIN

PRINT ‘不能修改分数‘

ROLLBACK TRAN

END

END

4)删除update_grade触发器。

删除update_grade触发器的命令:

DROP TRIGGER update_grade

四、实验总结

最最基础的

时间: 2024-08-27 07:12:01

存储过程与触发器的应用的相关文章

存储过程和触发器——MySQL

从MySQL5.0版本开始就对存储过程和触发器进行了支持,在MySQL进行学习前,先查看您所使用的版本吧,方法有: 1.$mysql -V  //linux终端下 2.select version();  //mysql下 3. mysql --help | grep Distrib  //linux终端下 在了解您所使用的版本支持情况下再下一步 存储过程  sql语句执行的时候要先编译,然后执行.存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数

mysql 自定义存储过程和触发器

mysql 自定义存储过程和触发器 --存储过程示范 DROP PROCEDURE IF EXISTS PRO_TEST; CREATE PROCEDURE PRO_TEST(IN NUM_IN INT,OUT NUM_OUT INT,INOUT NUM_INOUT) BEGIN //DO ANYTHING YOU WANT END; 参数解释: in : 就是输入参数,输入参数是会被传入到存储过程作为参数使用,改变它的值将不会改变其原本值,相当于是值传递 out: 此为输出参数,在存储过程中为

MSSQL 事务,视图,索引,存储过程,触发器

事务 事务是一种机制.是一种操作序列,它包含了一组数据库操作命令,这组命令要么全部执行,要么全部不执行. 在数据库系统上执行并发操作时事务是作为最小的控制单元来使用的.这特别适用于多用户同时操作的数据通信系统.例如:订票.银行.保险公司以及证券交易系统等. 如果某一事务成功,则在该事务中进行的所有数据修改均会提交,成为数据库的永久组成部分,如果事务遇到错误且必须取消或回滚,则所有数据修改均会被清除. 开始事务 BEGIN TRANSACTION 提交事务 COMMIT TRANSACTION 回

mysql的存储过程和触发器的使用 以及php中的调用方法

存储过程顾名思义,相当于一组为了完成特定功能的sql语句集,经编译后存储在数据库中.用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它.存储过程是数据库中的一个重要对象,任何一个设计良好的数据库应用程序都应该用到存储过程. 存储过程的书写格式:  CREATE PROCEDURE [拥有者.]存储过程名[;程序编号]  [(参数#1,-参数#1024)]  [WITH  {RECOMPILE | ENCRYPTION | RECOMPILE, ENCRYPTION}  ] 

oracle 存储过程 ,触发器练习

/*以下代码是对emp表进行显示宽度设置 */col empno for 9999;col ename for a10;col job for a10;col mgr for 9999;col hiredate for a12;col sal for 9999;col comm for 9999;col deptno for 99;col tname for a12;set pagesize 50; //----------------------------------------------

SQL基本编程,分支语句,循环语句,存储过程,触发器

基本编程: 定义变量 declare @变量名 数据类型 赋值 set @变量名 = 值 select @变量名 = 值 取值打印 select @变量名 print @变量名 映射到结果集 打印到消息框 分支语句if @a>@bbegin 语句....endelsebeginend 循环语句注意循环四要素:初始条件,循环条件,循环体,状态改变 declare @a int;select @a = 1; while 循环条件 @a<=10begin 循环体end 存储过程: 存储过程是集中存储

Sqlserver中存储过程,触发器,自定义函数(一)

Sqlserver中存储过程,触发器,自定义函数 1.存储过程有关内容存储过程的定义:存储过程的分类:存储过程的创建,修改,执行:存储过程中参数的传递,返回与接收:存储过程的返回值:存储过程使用游标. 1.1存储过程的定义:存放在服务器上预先编译好的sql语句,可以给存储过程传递参数,也可以从存储过程返回值. 优点:提供了安全访问机制,比如可以将不同的存储过程的执行权限赋予权限不同的用户:改进了执行性能,因为存储过程是预编译的:减少了网络流量,因为在调用存储过程时,传递的字符串很短,没有很长的s

T-SQL应用,视图、存储过程、触发器、游标、临时表等

sqlserver常用操作: 视图.存储过程.触发器.函数 --*********************批处理********************* --[在一个批处理中存有一个语法错误,则所有的语句都无法通过编译] USE flowershopdb SELECT * FROM tb_category SELECT * FROM tb_detailed SELECT * FROM tb_product SELECT * FROM tb_shopping SELECT * FROM tb_u

mysql存储过程和触发器的应用

***********[mysql 存储过程和触发器 -- 别安驹]********************* 1.什么情况下使用存储过程? 完成一些比较麻烦的逻辑,比如多表在mysql端的cpu很空闲的情况下,用存储过程是不错的选择, 1.1.简单的存储过程示例:简单写入 DELIMITER $$ USE `curl_test`$$ DROP PROCEDURE IF EXISTS `data_s`$$ CREATE DEFINER=`root`@`localhost` PROCEDURE `

用SQL语句查找包含有某个关键字的存储过程、触发器、函数等(仅适用MS SQL SERVER)

原文:用SQL语句查找包含有某个关键字的存储过程.触发器.函数等(仅适用MS SQL SERVER) 第一种方法:利用系统表进行查询 --将text替换成你要查找的内容 select name from sysobjects o, syscomments s where o.id = s.id and text like '%text%' and o.xtype = 'P' xtype:对象类型.可以是下列对象类型中的一种: C = CHECK 约束 D = 默认值或 DEFAULT 约束 F