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代理作业.每个作业有一个或多个步骤,可能包含大量的工作流.在这篇文章中,将查看作 ...
随机推荐
- 渗透实战(周六):Hydra&Metasploit暴力破解SSH登录口令
一. SSH服务开启前基础配置 1.1 修改配置文件
- Django - 日志工作中常用配置
工作中常用配置 # 日志配置 BASE_LOG_DIR = os.path.join(BASE_DIR, "log") LOGGING = { 'version': 1, # 保留 ...
- BFOA
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <time.h> ...
- net core 配置Redis Cache
参考文章地址:https://dotnetcoretutorials.com/2017/01/06/using-redis-cache-net-core/ 具体步骤: 1 Install-Pack ...
- flask中的session cookie 测试 和 项目中的用户状态保持
# -*- coding:utf-8 -*- # Author: json_steve from flask import Flask, current_app, make_response, req ...
- Navicat premium连接Oracle报ORA-12514错误
1:ORA-12514 原因:Service Name/SID中的值填的有问题,默认的是ORCL,这个值如果在安装Oracle的时候填的不是ORCL,那就会出现这个错误 解决方法:找到Oracle安装 ...
- nyoj_289_苹果_20140307
苹果 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 ctest有n个苹果,要将它放入容量为v的背包.给出第i个苹果的大小和价钱,求出能放入背包的苹果的总价钱最大值. ...
- nyoj_85_有趣的数_201312122130
有趣的数 时间限制:3000 ms | 内存限制:65535 KB 难度:2 描述 把分数按下面的办法排成一个数表. 1/1 1/2 1/3 1/4..... 2/1 2/2 ...
- 网站配置https(腾讯云域名操作)
我们都知道http协议是超文本传输协议,早期的网站使用的都是http,但是并不安全,数据在传输过程中容易被拦截篡改.所以后面有了https,也就是经过ssl加密的http协议.本文主要对网站配置htt ...
- Clojure:通过cursive连接远程REPL服务器
配置很简单,步骤如下:1. 选择Edit Configurations…2. 选择Clojure REPL -> Remote3. 输入远程服务器的ip和端口. 最后点运行就可 ...