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