您的位置:首页 > 数据库

SQL存储过程分配宿舍实例

2016-04-16 21:14 393 查看
CREATE DATABASE DBStuManage
use DBStuManage

CREATE TABLE TBROOM
(
ROOMID INT IDENTITY(1,1) primary key,
RoomNumber INT ,
RoomBedCount INT,
studentID INT
)
select * from TBROOM

CREATE TABLE TBSTUDENT
(
studentID int primary key identity(1,1),
name NVARCHAR(50) NOT NULL,
sex bit not null,
birthday datetime not null,
majorid int
)
select * from TBSTUDENT


--USE [DBStuManage]
--GO

--DECLARE   @return_value int

--EXEC  @return_value = [dbo].[DistributeDorm]
--      @bedCount = 4,
--      @startROOmNumber = 102,
--      @name = N'12',
--      @sex = false,
--      @birthday = N'1991-8-8',
--      @majorid = 3

--SELECT    'Return Value' = @return_value

--GO


--use DBStuManage
ALTER PROC DistributeDorm
@bedCount int,
@startROOmNumber int,
@name nvarchar(10),
@sex bit,
@birthday datetime,
@majorid int

AS
BEGIN
DECLARE
@studentID int,
@currentRoomNumber int,
@currentRoomBedCount int,
@isStart int,
@isHave int
set @currentRoomNumber = @startROOmNumber
--插入学生
INSERT INTO TBSTUDENT values(@name,@sex,@birthday,@majorid)
--取到当前学生ID
SELECT @studentID= MAX(STUdentID) FROM TBSTUDENT;
--SET @studentID = @@IDENTITY
--判断tbroom是否为空
SELECT @isStart = COUNT(1) FROM tbRoom
IF(@isStart = 0 OR @isStart is null )
BEGIN
SET @currentRoomNumber = @startROOmNumber
END
--判断选择的寝室是否被分配
SELECT @isHave = COUNT(1) FROM tbRoom WHERE RoomNumber = @startROOmNumber
IF(@isHave = 0 or @isHave is null)--未被分配
BEGIN
--设置寝室号
SET @currentRoomNumber = @startROOmNumber
SET @currentRoomBedCount = 0
--插入学生ID到寝室分配表
--INSERT INTO tbRoom VALUES (@currentRoomNumber,@currentRoomBedCount + 1,@studentID)
END
ELSE
BEGIN
--判断寝室是否住满
SELECT @currentRoomBedCount = COUNT(1) FROM tbRoom WHERE RoomNumber = @currentRoomNumber
--获取当前已分配到的床号
SELECT @currentRoomBedCount = COUNT(1) FROM tbRoom WHERE RoomNumber = @currentRoomNumber
IF(@currentRoomBedCount >= @bedCount)
BEGIN
--判断寝室已经分配到哪一间
SELECT @currentRoomNumber = MAX(RoomNumber)FROM tbRoom
SELECT @currentRoomBedCount = COUNT(1) FROM tbRoom WHERE RoomNumber = @currentRoomNumber
IF(@currentRoomBedCount >= @bedCount)
BEGIN
SET @currentRoomNumber = @currentRoomNumber + 1
SET @currentRoomBedCount = 0
END
END

4000
--插入学生ID到寝室分配表

END     INSERT INTO tbRoom VALUES (@currentRoomNumber,@currentRoomBedCount + 1,@studentID)
--6.查看寝室分配表
SELECT * FROM tbRoom order by RoomNumber
END
GO
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  存储 数据库 实例 sql