0
我想使用從過程中的CASE語句回報。它不能是一個函數,因爲該過程返回一個插入的鍵。SQL服務器 - 從個案存儲過程返回結果表達式
UPDATE TIM
SET CD_LINHA_EVENTO =
CASE WHEN
TIM.CD_SUBESTRUTURA_PARAMETRO = (SELECT TOP 1 SPZ.CD_SUBESTRUTURA_PARAMETRO FROM SUBESTRUTURA_PARAMETRO SPZ WITH (NOLOCK) WHERE SPZ.CD_SUBESTRUTURA = TIM.CD_SUBESTRUTURA
AND SPZ.FL_SELECAO = 1 ORDER BY SPZ.NR_ORDEM)
THEN
**EXEC [dbo].[SPRTO_NumeracaoEventos]**
ELSE
(SELECT MAX(TIM2.CD_LINHA_EVENTO) FROM #TB_INSERTED_MODIFIED TIM2 WITH(NOLOCK))
END
FROM #TB_INSERTED_MODIFIED TIM WITH (NOLOCK)
存儲過程[SPRTO_NumeracaoEventos]:
INSERT INTO TB_NUMERACAO_EVENTOS (VALOR) VALUES ('')
RETURN SCOPE_IDENTITY()
謝謝!
你需要找到實現這個邏輯一些其他的方式。 'update'語句不是正確的方法。也許你需要一個觸發器。 – 2014-08-30 15:33:17
謝謝@GordonLinoff。實際上,它已經在觸發器之內。我試圖避免WHILE循環,並在每次更新#TB_INSERTED_MODIFIED行,但我覺得應該是這樣... = \ – 2014-08-30 15:43:42
使用輸出參數,沒有返回值。返回是用於錯誤和狀態碼,而不是數據。 http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/09/bad-habits-to-kick-using-select-or-return-instead-of-output.aspx – 2014-08-30 19:02:45