SQL Server存储过程作业(三)

--阶段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 ---押金 AS
SET @GuestID = -1
IF (@identityID IS NULL OR LEN(@identityID) <> 18)
return -1 BEGIN TRANSACTION
INSERT INTO GuestRecord
(
IdentityID,
GuestName,
RoomID,
ResideID,
ResideDate,
Deposit)
VALUES
(
@identityID,
@guestName,
@roomID,
1,
@ResideDate,
@deposit
)
IF (@@ERROR <> 0)
BEGIN
ROLLBACK TRANSACTION
return 'false'
END DECLARE @RoomStateID int
SELECT @RoomStateID=RoomStateID FROM RoomState
WHERE RoomStateName = '已入住'
---客房状态变为“入住”,客人数量增1
Update Room set RoomStateID =@RoomStateID,GuestNum=GuestNum+1
WHERE RoomID = @roomID
IF (@@ERROR <> 0)
BEGIN
ROLLBACK TRANSACTION
return -1
END
COMMIT TRANSACTION
SET @GuestID=@@IDENTITY
return 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 int SET @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)
BEGIN
PRINT '插入客人记录操作成功'
PRINT '客人编号是' + CAST(@GuestID AS varchar)
END
ELSE
PRINT '插入客人记录操作失败'

--查询在维修状态的房间信息
create view RoomStateName
as
select Room.RoomID,RoomType.TypeName,
RoomState.RoomStateName
from Room
inner join RoomType on RoomType.TypeID=Room.RoomTypeID
inner join RoomState on RoomState.RoomStateID=Room.RoomStateID
where RoomState.RoomStateName='维修'
go select * from RoomStateName

--使用事物删除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
SQL Server存储过程作业(三)的更多相关文章
- SQL Server存储过程作业(二)
阶段1:练习——统计某类型客房的入住客人人数 需求说明 使用存储过程统计在指定类型的客房入住客人的总人数 提示: 存储过程的输入参数是指定的客房类型名称 USE Hotel GO --阶段1:查询入住 ...
- SQL Server存储过程作业(一)
创建客房类型表RoomType 创建客房状态表RoomState 创建客房信息表Room 创建结账状态表ResideState 创建客人信息表GuestRecord 编写sql语句 USE maste ...
- 第二篇 SQL Server代理作业步骤和子系统
本篇文章是SQL Server代理系列的第二篇,详细内容请参考原文. SQL Server代理作业由一系列的一个或多个作业步骤组成.一个作业步骤分配给一个特定的作业子系统(确定作业步骤去完成的工作). ...
- 【译】第二篇 SQL Server代理作业步骤和子系统
本篇文章是SQL Server代理系列的第二篇,详细内容请参考原文. SQL Server代理作业由一系列的一个或多个作业步骤组成.一个作业步骤分配给一个特定的作业子系统(确定作业步骤去完成的工作). ...
- 从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)
从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn) 第一篇http://www.cnblogs.com/lyhabc/p/4678330.html第二篇http://w ...
- 第七篇 SQL Server代理作业活动监视器
本篇文章是SQL Server代理系列的第七篇,详细内容请参考原文 在这一系列的上一篇,你创建并配置SQL Server代理作业.每个作业有一个或多个步骤,可能包含大量的工作流.在这篇文章中,将查看作 ...
- sql server 存储过程使用游标记录
sql server 存储过程使用游标记录--方便下次参考使用 游标的组成: 声明游标 打卡游标 从一个游标中查找信息 关闭游标 释放游标 游标类型: 静态游标 动态游标 只进游标 键集驱动游标 静态 ...
- SQL Server存储过程 对数组参数的循环处理
方法一 分割 例:通过SQL Server存储过程传送数组参数删除多条记录 eg. ID 值为'1,2,3' 以下存储过程就是删除表中id号为1,2,3的记录: CREATE PROCEDURE De ...
- 【译】第七篇 SQL Server代理作业活动监视器
本篇文章是SQL Server代理系列的第七篇,详细内容请参考原文 在这一系列的上一篇,你创建并配置SQL Server代理作业.每个作业有一个或多个步骤,可能包含大量的工作流.在这篇文章中,将查看作 ...
随机推荐
- 使用Python PIL库中的Image.thumbnail函数裁剪图片
今天,是我来到博客园的第五天,发现自己还没有头像,想着上传ubuntu系统中我很喜欢的一个背景图片来当头像,但是因为图片过大,上传失败了.那么,我们如何使用python中强大的PIL库来进行图片裁剪呢 ...
- BZOJ 1016 最小生成树计数 【模板】最小生成树计数
[题解] 对于不同的最小生成树,每种权值的边使用的数量是一定的,每种权值的边的作用是确定的 我们可以先做一遍Kruskal,求出每种权值的边的使用数量num 再对于每种权值的边,2^num搜索出合法使 ...
- 玲珑杯1147 - 最后你还是AK了
1147 - 最后你还是AK了 Time Limit:5s Memory Limit:256MByte DESCRIPTION 今天HHHH遇到了一颗树,这个树有nn个点(nn为偶数),每条边都有一个 ...
- 关于linux中使用vim打开文件出现^M的解决方法
在linux下,不可避免的会用VIM打开一些windows下编辑过的文本文件.我们会发现文件的每行结尾都会有一个^M符号,这是因为 DOS下的编辑器和Linux编辑器对文件行末的回车符处理不一致, 各 ...
- 华为/H3C Syslog配置
H3C交换机的设置举例1. 组网需求将系统的日志信息发送到 linux 日志主机:日志主机的IP 地址为1.2.0.1/16:信息级别高于等于 informational 的日志信息将会发送到日志主机 ...
- StackOverflow 这么大,它的架构是怎么样的
原文地 [伯乐在线补充]:Nick Craver 是 StackOverflow 的软件工程师 & 网站可靠性工程师. 这是「解密 Stack Overflow 架构」系列的第一篇,本系列会有 ...
- iOS: 导航栏显示默认后退按钮
要显示系统默认的后退按钮(非自定义)的语句如下: [[self navigationController] setNavigationBarHidden:NO animated:YES];self.n ...
- B1934 [Shoi2007]Vote 善意的投票 最小割
一开始不太会,结果看完题解就是一个建图的网络流.然后就结了. 题干: 题目描述 幼儿园里有n个小朋友打算通过投票来决定睡不睡午觉.对他们来说,这个问题并不是很重要,于是他们决定发扬谦让精神.虽然每个人 ...
- OC常用的数学函数及宏定义
一.函数 1. 三角函数 double sin (double);正弦 double cos (double);余弦 double tan (double);正切 2 .反三角函数 double as ...
- PCB 工程系统 模拟windows域帐号登入
一.需求描述: 对于PCB制造企业来说,基本都采用建立共享目享+域名管控权限,好像别的大多数行业都是这样的吧.呵呵 在实际应用中,经常会有这样的问题,自己登入的帐号没有共享目录的权限,但又想通过程序实 ...