如何在另一个过程中使用存储过程中的参数

时间:2013-03-29 14:02:59

标签: sql stored-procedures

我创建了一个在线员工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表中的外键传递。

我想知道是否可以将其传递给我的其他类似于此的存储过程。

2 个答案:

答案 0 :(得分:1)

我不确定你要做什么,但是如果你想将@RotaID参数值返回给调用程序以便在将来的过程调用中使用,你可以将参数指定为{{ 1}}:

OUTPUT

答案 1 :(得分:0)

在每个辅助存储过程中,您需要使用select语句检索主键ID。您知道所有二次手续的周末和周末吗?所以你知道要拉哪一行来检索id。希望我有道理。