数据库:存储过程实验

本文涉及的产品
云数据库 RDS SQL Server,独享型 2核4GB
简介: 一、实验目的及要求目的掌握存储过程的编写与调用要求掌握存储过程的编写;掌握存储过程的调用

一、实验目的及要求

目的

掌握存储过程的编写与调用

要求

掌握存储过程的编写;掌握存储过程的调用

二、实验条件

安装有SQL Server2014数据库的计算机

三、实验内容

使用事务、锁和游标;编写和使用存储过程;使用触发器

四、实验结果

1.使用事务方式往院系表(t_department)中添加院系信息。信息分别为:(1)04,电器工程系,伏特;(2)04,机械工程系,墨子。要求两条记录同时添加,若错误则回滚,最后查询当前院系表中的数据信息。注意要查看输出的结果信息和消息信息。

参考代码:

use EMISE

go

begintran mytran

insertinto t_department values('04','电器工程系','欧姆')

insertinto t_department values('04','机械工程系','墨子')

if@@ERROR>0

rollbacktran mytran

else

committran mytran

select*from t_department

 

查看结果:

正在上传…重新上传取消

查看信息:

 

正在上传…重新上传取消

 

2.把题目 1 中的数据改为(1)04,电器工程系,伏特;(2)05,机械工程系,墨子;再次运行代码,查看结果和消息。

结果:

正在上传…重新上传取消

 

消息:

正在上传…重新上传取消

 

3.使用存储过程中定义事务实现银行转账业务处理。

usemaster

go

ifDB_ID('bankdb')isnotnull

dropdatabase bankdb;

go

createdatabase bankdb

go

use bankdb

go

createtable account(

id intidentity(1,1)primarykey,

cardno char(20)uniquenotnull,

balance numeric(18,2)

)

go

insertinto account values('01',100.0)

insertinto account values('02',200.0)

insertinto account values('03',300.0)

go

--创建存储过程

createprocedure sp_transfer_money

@out_cardno char(20),

@in_cardno char(20),

@money numeric(18,2)

as

begin

declare @remain numeric(18,2)

select @remain=balance from account where cardno=@out_cardno

if @money>0

if @remain>=@money --余额足够

begin

begintran t1

update account set balance=balance-@money where cardno=@out_cardno

update account set balance=balance+@money where cardno=@in_cardno

if@@error>0

begin---wrong

rollbacktran t1

return 0

end

else

begin---right

committran t1

print'转账成功!'

end

end

else---余额少

begin

print'余额不足'

end

else--- 转账金额小于0

print'转账金额应大于0!'

end

go

exec sp_transfer_money '01','02',50

正在上传…重新上传取消

 

4.在SQL Server中查看数据库中的锁。

(1)使用快捷键“Ctrl+2”查看锁的信息。

打开SQL Server2014的SSMS,在查询分析器中使用快捷键“Ctrl+2”,即可看到进程、锁已经对象等信息,如下图所示:

正在上传…重新上传取消

 

(2)使用系统存储过程sp_lock来查看数据库中的锁。

在新建查询的编辑区内,键入“EXEC sp_lock”,执行这个命令也可以查看当前数据库中的锁。

EXECsp_lock

正在上传…重新上传取消

 

5.使用表级锁。在 SQL Server 中模拟两个用户对表进行操作,其中一个用户查看学生表信息,并锁定 20ms;另一个用户也查看学生表,并要更新其中的数据。

(1)创建一个新的查询窗口,在编辑区窗口内键入如下代码,并保存为user1_lock.sql。

use EMISE

go

begintran t1

declare @sd_time varchar(8)

select*from t_student with(holdlock)

select @sd_time=convert(varchar,getdate(),8)

print'用户1锁定时间为:'+@sd_time

waitfordelay'00:00:20'

select @sd_time=convert(varchar,getdate(),8)

print'用户1锁定时间为:'+@sd_time

committran t1

正在上传…重新上传取消

 

(2)创建一个新的查询窗口,在编辑区窗口键入如下代码,并保存为user2_update.sql。

use EMISE

go

begintran t2

declare @sd_time varchar(8)

--select *from t_student with(holdlock)

select @sd_time=convert(varchar,getdate(),8)

print'用户2开始时间为:'+@sd_time

select*from t_student

select @sd_time=convert(varchar,getdate(),8)

print'用户2执行查询的时间为:'+@sd_time

update t_student setname='wang'wherename='王庆子'

select @sd_time=convert(varchar,getdate(),8)

print'用户2更新数据的时间为:'+@sd_time

committran t2

正在上传…重新上传取消

相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情: https://www.aliyun.com/product/rds/sqlserver
目录
相关文章
|
1月前
|
存储 SQL 关系型数据库
【MySQL 数据库】9、存储过程
【MySQL 数据库】9、存储过程
205 0
|
2月前
|
存储 数据库
Navicate 如何导出数据库中的存储过程、事件、视图等?
Navicate 如何导出数据库中的存储过程、事件、视图等?
|
4月前
|
关系型数据库 MySQL Java
西电数据库实验一:数据库远程连接的实验报告
姓名:贾瑞 学号:21009201172 实验一:数据库远程连接
|
3月前
|
存储 Java 数据库
JAVAEE框架数据库技术之13_oracle 之PLSQL技术及存储过程和函数(二)
JAVAEE框架数据库技术之13_oracle 之PLSQL技术及存储过程和函数
38 0
|
1月前
|
存储 SQL 数据挖掘
视图、触发器和存储过程:提升数据库功能
视图、触发器和存储过程:提升数据库功能
19 1
|
2月前
|
存储 数据库
【数据库】分支与循环&函数&存储过程
【数据库】分支与循环&函数&存储过程
24 1
|
2月前
|
存储 Linux 数据库
期末速成数据库极简版【存储过程】(5)
期末速成数据库极简版【存储过程】(5)
20 0
|
2月前
|
关系型数据库 分布式数据库 数据库
云原生数据库PolarDB快速入门实验
【2月更文挑战第2天】很基础的PolarDB入门操作实验考试,假期闲着无聊考着玩玩。云原生数据库 PolarDB MySQL 版是阿里云自研产品,100%兼容 MySQL。PolarDB产品具有多主多写、多活容灾、HTAP 等特性,交易性能最高可达开源数据库的6倍,分析性能最高可达开源数据库的400倍,TCO 低于自建数据库50%。
|
3月前
|
存储 SQL Java
JAVAEE框架数据库技术之13_oracle 之PLSQL技术及存储过程和函数(一)
JAVAEE框架数据库技术之13_oracle 之PLSQL技术及存储过程和函数
35 0
|
3月前
|
存储 SQL 安全
MSSQL存储过程:数据库操作的得力助手
MSSQL存储过程:数据库操作的得力助手
36 0