阶段1:练习——统计某类型客房的入住客人人数
需求说明
使用存储过程统计在指定类型的客房入住客人的总人数
提示:
存储过程的输入参数是指定的客房类型名称
USE Hotel
GO--阶段1:查询入住在指定客房类型的客房的顾客数
IF EXISTS(SELECT * FROM sysobjects WHERE name='usp_GetGuestNumByTypeName')DROP PROC usp_GetGuestNumByTypeName
GO
CREATE PROCEDURE usp_GetGuestNumByTypeName@typeName varchar(50),    ----客房类型名称@result int OUTPUT        ---返回值,居住在指定客房类型客房的顾客数
AS SELECT @result = count(1)FROM GuestRecord WHERE RoomID IN(SELECT roomID FROM Room WHERE RoomTypeID=(SELECT TypeIDFROM RoomType WHERE TypeName = @typeName))PRINT @result
GO--调用存储过程
SET NOCOUNT ON
DECLARE @Count int
DECLARE @RoomType varchar(20)
SET @RoomType = '标准间'
EXEC usp_GetGuestNumByTypeName @RoomType,@Count OUTPUT
PRINT '入住酒店' + @RoomType + '的客人总人数是:' + CAST(@Count AS varchar(10))

阶段2:练习——根据房间号查询客房信息
需求说明
通过房间号查询客房的相关信息
如果房间号为-1表示查询所有客房信息
提示:
在存储过程中,使用IF语句判断输入参数是否为-1
IF EXISTS(SELECT * FROM sysobjects WHERE name='usp_GetRoomInfo')DROP PROC usp_GetRoomInfo
GO
CREATE procedure usp_GetRoomInfo@roomID int
ASIF @roomID=-1SELECT a.RoomID,a.BedNum,a.RoomStateID,a.Description,a.GuestNum,a.RoomTypeID,b.TypeName,b.TypePrice,RTRIM(c.RoomStateName) AS RoomStateNameFROM [Room] a INNER JOIN [RoomType] b ON a.RoomTypeID = b.TypeIDINNER JOIN [RoomState] c ON a.RoomStateID = c.RoomStateIDELSESELECT a.RoomID,a.BedNum,a.RoomStateID,a.Description,a.GuestNum,a.RoomTypeID,b.TypeName,b.TypePrice,RTRIM(c.RoomStateName) AS RoomStateNameFROM Room a INNER JOIN [RoomType] b ON a.RoomTypeID = b.TypeIDINNER JOIN [RoomState] c ON a.RoomStateID = c.RoomStateIDWHERE roomID = @roomID
GO--调用存储过程
/*
DECLARE @RoomID int
SET @RoomID = 1008
EXEC usp_GetRoomInfo @RoomID
*/
EXEC usp_GetRoomInfo -1

阶段3:练习——删除某种客房类型居住记录
需求说明
根据客房类型删除客房类型记录
如果操作成功,返回删除的记录数;否则返回-1
提示:
输入参数是指定的客房类型名称
使用NOT EXISTS关键字判断客房信息表是否存在要删除的客房类型
利用全局变量@@ROWCOUNT获得受影响的记录数
利用return语句返回执行结果
IF EXISTS(SELECT * FROM sysobjects WHERE name='usp_deleteRoomTypeById')DROP PROC usp_deleteRoomTypeById
GO
CREATE PROCEDURE usp_deleteRoomTypeById@typeName varchar(20) ----客房类型
ASDECLARE @typeID intSELECT @typeID=TypeID FROM RoomType WHERE TypeName = @typeNameIF NOT EXISTS (SELECT * FROM Room WHERE RoomTypeID = @typeID) --Room表里没有相关信息时才删除BEGINDELETE FROM RoomType WHERE TypeID=@typeIDreturn @@ROWCOUNTENDELSEreturn -1
GO--调用存储过程
DECLARE @RoomTYPE varchar(20)
DECLARE @Result int
SET @RoomTYPE  = '三人间'
EXEC @Result=usp_deleteRoomTypeById @RoomTYPE
IF (@Result > 0)PRINT '删除酒店客房类型是'+ @RoomTYPE +'的记录' + CAST(@Result AS varchar(10)) + '条'
ELSEPRINT '删除酒店客房类型是'+ @RoomTYPE +'的记录,失败'

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  9. java调用存储过程 sql server_Java中调用SQL Server存储过程示例

    Java中调用SQL Server存储过程示例2007-09-03 08:48来源:论坛整理作者:孟子E章责任编辑:方舟·yesky评论(3) 最近做了个Java的小项目(第一次写Java的项目哦), ...

最新文章

  1. Hinton等人最新研究:大幅提升模型准确率,标签平滑技术到底怎么用?
  2. 大一统的宇宙与太极原理之随想
  3. php恶意代码,警惕WordPress主题functions.php包含的恶意代码
  4. c++Error:c++调用python文件提示由于找不到python3.8.dll,无法继续运行。。。
  5. 嵌入式linux 配置usb otg,嵌入式系统设计中的USB OTG方案
  6. 数据库的辅助工具:My-SqlViewer
  7. 爱国者首款手机正式上市 零售价不超2000元
  8. [转载]qt信号signal和槽slot机制
  9. 使用Pycharm将代码同步到GitHub
  10. git clone 之前,是否需要先 git init
  11. cocos2dx进阶学习之场景切换
  12. Android 使用SQLiteDatabase操作SQLite数据库(二)
  13. 成长 工作 游戏 英语 阅读
  14. python正则表达式快速入门_Python 正则表达式入门
  15. vsCode的使用过程中遇到的问题?
  16. 记一次失败的小米前端面试经历
  17. 关于临时HY学长被安排拉二分题不想翻译找到DYM学长这件事(二)
  18. Android自动接听来电并录音
  19. Python|Leetcode《306》|累加数
  20. 中国有嘻哈:网易云、虾米音乐歌词爬虫项目分享

热门文章

  1. 网页运行python脚本_python脚本和网页有何区别
  2. java的字符串池_翻译-Java字符串池
  3. java 静态方法 变量_Java变量的初始化及静态方法的实现
  4. python迭代器_Python迭代器
  5. easymock使用方法_EasyMock静态方法– PowerMock,JUnit 4,TestNG
  6. C++开发的应用方向有哪些?
  7. 51Nod 1046 A^B Mod C(日常复习快速幂)
  8. 李新海:沉默是口才运用的最高境界
  9. CentOS7下安装PostgresSQL9.4.4
  10. 【Android重量级】高仿大众点评源码