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代理作业.每个作业有一个或多个步骤,可能包含大量的工作流.在这篇文章中,将查看作 ...
随机推荐
- Ac自动机基础题集合
Ac_automaton的板子打熟以后发现碰到题不会做,而且还是比较纯的板子,只要改几处地方就可以,Ac_automation有许多优秀而fantasy的性质,下面粘几个题,来记录一下做题的心得. 1 ...
- 【codeforces 515D】Drazil and Tiles
[题目链接]:http://codeforces.com/contest/515/problem/D [题意] 给你一个n*m的格子; 然后让你用1*2的长方形去填格子的空缺; 如果有填满的方案且方案 ...
- 嵌入式linux和嵌入式android系统有什么区别和联系?
转自:http://bbs.eeworld.com.cn/thread-430437-1-1.html 这个问题很多人问,尤其是初入嵌入式的菜鸟.其实大家都认为android是java,已经不是lin ...
- .NET Web API - 去掉讨厌的$id并且强制返回json格式
// 只返回json字符串,屏蔽自动选择xml格式的可能性,同时去掉讨厌的$id var json = config.Formatters.JsonFormatter; json.Serializer ...
- Openfire:访问Servlet时绕开Openfire的身份验证
假设有如下的场景,当我们开发一个允许Servlet访问的OF插件时,如果不需要身份验证的话,或者有其它的安全机制的话,我们会不希望每次都做一次OF的身份验证,而是能够直接访问Servlet.绕开身份验 ...
- 2.4-EN_STP
2.4-EN_STP 增强型生成树协议(EN_STP): Spannig Tree port states: blocking 20s+listening 15s+learning 15s最后 ...
- (七)CAS 本地localhost调试,无法单点退出疑问
干活的时候要多思考-------- 题记 昨天下午接到任务把内容汇聚平台和分发平台加上统一认证登录,之前弄过CAS,想想这个过程也就是按部就班的事情.在两个系统中we ...
- (IT/互联网行业)你给自己当前的职位拼几分?(评分标准,个人看法,勿喷~)
常常有身边的关系好的朋友或网友.问如今我该不该跳槽的问题. 我一般给他们的答复你能给当前的工作拼几分. 下面是我自己总结的一个评分标准.如有不当之处,勿喷~ --------------------- ...
- WebGIS开发技术杂谈
WebGIS项目的开发主要是B/S架构.最流行的是clientjavascript,server端java. 另外还有flexclient. client主要完毕用户交互.向server端发送请求并传 ...
- javase - 点餐系统
public class OrderMsg { public static void main(String[] args) throws Exception { /** * 订餐人姓名.选择菜品.送 ...