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
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;
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
--插入学生ID到寝室分配表
END INSERT INTO tbRoom VALUES (@currentRoomNumber,@currentRoomBedCount + 1,@studentID)
--6.查看寝室分配表
SELECT * FROM tbRoom order by RoomNumber
END
GO