【发布时间】:2020-09-11 17:43:57
【问题描述】:
我正在尝试使用If 语句编写一个过程。
这是我的数据库
我的想法是:当我们有相同的ComandmentNumber时,StudentNumber必须增加1,但是当我们有新的ComandmentNumber时,StudentNumber必须从1开始。
例子:
这是我在 SQL Server 中的过程
CREATE PROCEDURE InsertIntoDefeatsGraduates
@ComandmentNumber VARCHAR(100),
@StudentFakNumber INT
AS
BEGIN
DECLARE @StudentNumber INT
IF EXISTS (SELECT * FROM dbo.[Defeats-Graduates]
WHERE ComandmentNumber = @ComandmentNumber)
BEGIN
SET @StudentNumber += 1
INSERT INTO dbo.[Defeats-Graduates] (ComandmentNumber, StudentNumber, StudentFakNumber)
VALUES (@ComandmentNumber, @StudentNumber, @StudentFakNumber)
END
ELSE
BEGIN
SET @StudentNumber = 1
INSERT INTO dbo.[Defeats-Graduates](ComandmentNumber, StudentNumber, StudentFakNumber)
VALUES (@ComandmentNumber, @StudentNumber, @StudentFakNumber)
END
END
但是当我尝试执行这个时,我得到了这个错误:
无法将值 NULL 插入到列“StudentNumber”、表“Test.dbo.Defeats-Graduates”中;列不允许空值。插入失败。
【问题讨论】:
标签: sql-server procedure