0

私はオンラインの人事異動アプリケーションを作成しました。テーブルの自動インクリメント主キーを使用して、曜日ごとにストアド プロシージャがありRotaます。選択した週内の各日はrota ID、外部キーと同じになります。

選択した最初の日には問題はありませんが、次の日は外部キーに対して NULL を返します。これは、を他のストアド プロシージャに渡して、週次の 7 日間同じままであることを確認するRotaID方法がわからないためです。RotaIDRotaIDRota

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ます。

これを、これに似た他のストアド プロシージャに渡すことができるかどうかを知りたいです。

4

2 に答える 2

1

何をしようとしているのか正確にはわかりませんが@RotaID、将来のプロシージャ呼び出しで使用するために呼び出しプログラムにパラメーター値を返したい場合は、パラメーターをOUTPUT次のように指定できます。

CREATE PROCEDURE [usp_RotaDay1]
(
    @Week_Begin datetime, 
    @Week_End datetime,

    @1ShiftDate datetime,
    @1Day nchar (10),
    @RotaID int OUTPUT
)
AS
    ...
于 2013-03-29T14:08:12.807 に答える
0

セカンダリ ストアド プロシージャのそれぞれで、select ステートメントを使用してプライマリ キー ID を取得する必要があります。すべての二次手順の週開始と週末を知っていますか? そのため、ID を取得するためにプルする行がわかります。私が理にかなっていることを願っています。

于 2013-03-29T14:09:24.510 に答える