我已经解决了这个问题光标:
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-的Transact-SQL)。 –