阶段4:练习——插入入住客人记录
需求说明
使用存储过程将入住客人信息插入客人信息表中,要求:
检查身份证号必须是18个字符组成
押金的默认值为1000元
如果客人记录插入成功,输出客人流水号;否则输出出错信息
提示:
客人的信息作为存储过程的输入参数
客人流水号作为存储过程的输出参数
利用事务确保数据完整性
客人记录插入客人信息表
修改客人入住房间的人数
--阶段4:添加一个入住客人的信息
IF EXISTS(SELECT * FROM sysobjects WHERE name='usp_insertGuestRecord')DROP PROC usp_insertGuestRecord
GO
CREATE procedure usp_insertGuestRecord@GuestID int OUTPUT,                ---客户流水号@identityID varchar(50),            ---身份证号@guestName nchar(20),                ---客户姓名@roomID int,                        ---房间号@ResideDate datetime,                ---入住时间@deposit decimal(18,2) = 1000        ---押金ASSET @GuestID = -1IF (@identityID IS NULL OR LEN(@identityID) <> 18)return -1BEGIN TRANSACTIONINSERT INTO GuestRecord(IdentityID,GuestName,RoomID,ResideID,ResideDate,Deposit)VALUES(@identityID,@guestName,@roomID,1,@ResideDate,@deposit)IF (@@ERROR <> 0)BEGINROLLBACK TRANSACTIONreturn 'false'ENDDECLARE @RoomStateID intSELECT @RoomStateID=RoomStateID FROM RoomStateWHERE RoomStateName = '已入住'---客房状态变为“入住”,客人数量增1Update Room set RoomStateID =@RoomStateID,GuestNum=GuestNum+1WHERE RoomID = @roomIDIF (@@ERROR <> 0)BEGINROLLBACK TRANSACTIONreturn -1ENDCOMMIT TRANSACTIONSET @GuestID=@@IDENTITYreturn 0
GO--调用存储过程
DECLARE @identityID varchar(50)            ---身份证号
DECLARE @guestName nchar(20)            ---客户姓名
DECLARE @roomID int                        ---房间号
DECLARE @deposit decimal(18,2)            ---押金
DECLARE @ResideDate datetime            ---入住时间
DECLARE @Result varchar(20)
DECLARE @GuestID intSET @identityID = '11010119950506112x'
SET @guestName = '风无痕'
SET @roomID = 1008
SET @deposit = 1000
SET @ResideDate = GETDATE()EXEC @Result = usp_insertGuestRecord @GuestID OUTPUT,@identityID,@guestName,@roomID,@ResideDate,@deposit
IF (@Result = 0)
BEGINPRINT '插入客人记录操作成功' PRINT '客人编号是' + CAST(@GuestID AS varchar)
END
ELSEPRINT '插入客人记录操作失败' 

阶段5:练习——使用视图查询正在维修的房间信息
创建视图查询维修房间的信息,要求:
要有房间号,房间名称,房间状态
提示:
连接房间客房信息表
客房状态表
客房类型表查询
--查询在维修状态的房间信息
create view  RoomStateName
asselect Room.RoomID,RoomType.TypeName,RoomState.RoomStateName from Roominner  join RoomType on RoomType.TypeID=Room.RoomTypeIDinner join RoomState on RoomState.RoomStateID=Room.RoomStateIDwhere RoomState.RoomStateName='维修'
goselect * from RoomStateName

阶段6:练习——使用事物将已经退房的客户信息删除:
提示:
首先将已经退房的客户信息放到历史表里面(historyGuest)
在将客人信息表里面的数据删除(GuestRecord)
判断客人是否退房可以判断离开时间是否为空,不为空即是退房

--使用事物删除room表里面已经退房的旅客
begin transaction
declare @errorNum  int --错误的号码
set @errorNum=0
select *  into historyGuest from  GuestRecord
where LeaveDate is not null
set @errorNum=@errorNum+@@ERROR
delete  from  GuestRecord
where LeaveDate is not null
set @errorNum=@errorNum+@@ERROR
if(@errorNum<>0)
begin
print '删除失败,事物回滚'
rollback transaction
end
else
begin
print '删除成功'
commit transaction
end

转载于:https://www.cnblogs.com/wlx520/p/4501970.html

SQL Server存储过程作业(三)相关推荐

  1. SQL Server存储过程作业(二)

    阶段1:练习--统计某类型客房的入住客人人数 需求说明 使用存储过程统计在指定类型的客房入住客人的总人数 提示: 存储过程的输入参数是指定的客房类型名称 USE Hotel GO--阶段1:查询入住在 ...

  2. sql 查询超时已过期_监视来自SQL Server代理作业的查询超时过期消息

    sql 查询超时已过期 SQL Server provides you with a good solution to automate a lot of your administrative ta ...

  3. 讲解SQL Server定时作业job的设置方法

    如果在SQL Server 里需要定时或者每隔一段时间执行某个存储过程或3200字符以内的SQL语句时,可以用管理->SQL Server代理->作业来实现. ◆1.管理->SQL ...

  4. SQL Server 存储过程中使用raiserror抛出异常

    转自(SQL Server 存储过程中使用raiserror抛出异常 ) 一 系统预定义错误代码 SQL Server 有3831个预定义错误代码,由master.dbo.sysmessages 表维 ...

  5. 从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

    从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn) 第一篇 http://www.cnblogs.com/lyhabc/p/4678330.html 第二篇 http: ...

  6. SQL Server 存储过程定时转存数据

    SQL Server 存储过程,定时将临时表中今天之前的数据转存到对应年月的历史表中,执行如下语句创建存储过程,然后创建SQL Server 代理作业,计划设置为每天定时执行 USE [MYDATAB ...

  7. sql server存储过程基本写法

    sql server存储过程的优点 1.存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般 SQL 语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度. 2.当对数据 ...

  8. SQL Server存储过程输入参数使用表值

    在2008之前如果我们想要将表作为输入参数传递给SQL Server存储过程使比较困难的,可能需要很多的逻辑处理将这些表数据作为字符串或者XML传入. 在2008中提供了表值参数.使用表值参数,可以不 ...

  9. SQL Server存储过程里全库查找引用的数据库对象(表、存储过程等)

    SQL Server存储过程全库匹配数据库对象(表.存储过程等) 简介 可以通过自定义存储过程sp_eachdb来遍历每个数据库然后结合sys.objects 关联sys.sql_modules后的d ...

  10. SQL server 存储过程的建立和调用

    SQL server 存储过程的建立和调用 存储过程的建立和调用 --1.1准备测试需要的数据库:test,数据表:物料表,采购表 if not exists (select * from maste ...

最新文章

  1. 基于PHP的图片共享网站设计,基于PHP实现的WEB图片共享系统(SQL数据库),毕业论文设计...
  2. python 知识点怎么办_在Python中处理日期和时间的基本知识点整理汇总
  3. 2018 美团、腾讯、头条、蔚来 社招面试随谈
  4. 微信小程序API之map
  5. makefile编写---:= ?= += =的区别
  6. webpack在内存生成html,Vue学习之Webpack基本使用小结(十三)
  7. 高速公路坐标高程计算软件3.3版本发布
  8. G-Dezender批量解密
  9. kux2mp4(优酷kux转换为mp4软件) v2021
  10. GEOMETRIC APPLICATIONS OF BSTS
  11. Zotero安装与同步配置(PC+ipad双平台)
  12. JetBrain的哪款产品能够编写C++和C的代码啊?
  13. python用于cad_使用Python读取AutoCAD DXF文档
  14. python 散点图 置信区间_python matplotlib – 等高线图 – 置信区间
  15. 反射机制-Reflected
  16. 《现代操作系统》读书笔记之——进程间通信
  17. java-net-php-python-jsp房屋出租网站-视频演示计算机毕业设计程序
  18. harbor仓库部署
  19. jQuery中的DOM操作
  20. 基于FPGA的VGA显示图片

热门文章

  1. Node.js nvshens图片批量下载爬虫 1.00
  2. MySQL配置文件my.cnf参数优化和中文详解
  3. 清除zencart分类页多页后面的disp_order sort字符串的方法
  4. 【转】WF4.0实战系列索引
  5. svn在linux下的使用(svn命令行)删除 新增 添加 提交 状态查询 恢...
  6. 学技术的不能自废武功
  7. javascript的parseInt函数(转)
  8. Android ProGuard 还原堆栈
  9. element ui 表格拆分表格_python拆分表格数据
  10. [FJOI2014] 石子合并问题