私はカーソルで問題を解決しました:
DECLARE JETACE_01 cursor for
SELECT CAET_KEY, TACE_SRT, TACE_STA
FROM JETACE
WHERE TASK_KEY = @iTASK_KEY_CON
OPEN JETACE_01
FETCH NEXT FROM JETACE_01
INTO @iCAET_KEY, @cTACE_SRT, @cTACE_STA
WHILE @@FETCH_STATUS = 0
begin
EXEC @iTACE_KEY = sp_GETKEY 'JETACE', '0', '1', '9', @iUserId, @cTask='2'
IF (@@ERROR <> 0) OR (@iTACE_KEY < 0)
BEGIN
IF @cTask = '6'
SELECT -61 TACE_KEY
RETURN -61
END
INSERT INTO JETACE (TACE_KEY, TASK_KEY, CAET_KEY, TACE_SRT, TACE_STA, TACE_DAT, TACE_UAD, TACE_TAD)
VALUES(@iTACE_KEY, @iTASK_KEY, @iCAET_KEY, @cTACE_SRT, @cTACE_STA, GETDATE(), @iUserId, GETDATE())
FETCH NEXT FROM JETACE_01
INTO @iCAET_KEY, @cTACE_SRT, @cTACE_STA
END
CLOSE JETACE_01
DEALLOCATE JETACE_01
ないPROCで。 procがデータを変更しないと仮定して、procをクエリで使用する関数に変換することができます。 –
select文で呼び出すことができる主キー生成コードを保持する関数の作成を検討しましたか? – danielcooperxyz
ところで、ストアドプロシージャ名の接頭辞 'sp_'は、[documentation](https://docs.microsoft.com/en-us/sql/t-sql/statements/create-procedure-トランザクションSQL)。 –