我创建了一个在线员工rota应用程序。我有一个存储过程,每周的每一天都有一个Rota
表的自动增量主键。所选周内的每一天将与外键具有相同的rota ID
。
我对第一个选定的日期没有问题,但后续日子为外键RotaID
返回NULL,因为我不知道如何将RotaID
传递到其他存储过程以确保每周RotaID
的7天Rota
保持不变。
CREATE PROCEDURE [usp_RotaDay1]
@Week_Begin datetime,
@Week_End datetime,
@1ShiftDate datetime,
@1Day nchar (10),
AS
BEGIN
SET NOCOUNT ON;
DECLARE @RotaID int
IF NOT EXISTS
(
SELECT * FROM Rota
WHERE Week_Begin = @Week_Begin
AND
Week_End = @Week_End
)
BEGIN
INSERT INTO Rota
(
[Week_Begin],
[Week_End]
)
VALUES
(
@Week_Begin,
@Week_End
)
END
SELECT @RotaID = SCOPE_IDENTITY()
IF NOT EXISTS
(
SELECT * FROM DayShift
WHERE ShiftDate = @1ShiftDate
)
BEGIN
INSERT INTO DayShift
(
[RotaID],
[ShiftDate],
[Day]
)
VALUES
(
@RotaID,
@1ShiftDate,
@1Day
)
END
SET NOCOUNT OFF;
END
如您所见,我在RotaID
表中声明了Rota
,然后作为DayShift
表中的外键传递。
我想知道是否可以将其传递给我的其他类似于此的存储过程。
答案 0 :(得分:1)
我不确定你要做什么,但是如果你想将@RotaID
参数值返回给调用程序以便在将来的过程调用中使用,你可以将参数指定为{{ 1}}:
OUTPUT
答案 1 :(得分:0)
在每个辅助存储过程中,您需要使用select语句检索主键ID。您知道所有二次手续的周末和周末吗?所以你知道要拉哪一行来检索id。希望我有道理。