我試圖做一個循環測試,我有一個表有一個標誌,意味着「處理」,如果它是0它沒有處理,我需要處理,之後,我需要更新表並更改爲0,但它不工作,這裏是我使用的代碼。SQL雖然循環不更新表
DECLARE
@IdProcesso VARCHAR(20)
IF(NOT OBJECT_ID('tempdb..#PROCESSOS_PENDENTE') IS NULL)
BEGIN
DROP TABLE #PROCESSOS_PENDENTE;
END
SELECT IdProcesso as IdProcesso
INTO #PROCESSOS_PENDENTE
FROM fornecedores.aceite WHERE FlgEmProcesso = 0
--PERCORRE TODOS OS REGISTROS E ENVIA OS EMAILS
WHILE (exists (select IdProcesso from #PROCESSOS_PENDENTE))
BEGIN
UPDATE fornecedores.aceite set FlgEmProcesso = 1
WHERE IdProcesso = @IdProcesso
END
這是我使用的程序,現在它被建議的修改工作。
ALTER procedure [Fornecedores].[prConsultaStatusProcesso]
as
DECLARE
@IdProcesso VARCHAR(20),
@Tag SYSNAME,
@IdDoc UNIQUEIDENTIFIER,
@Parans VARCHAR(500)
--TEMP TABLES
IF(NOT OBJECT_ID('tempdb..#PROCESSOS_PENDENTE') IS NULL)
BEGIN
DROP TABLE #PROCESSOS_PENDENTE;
END
--ARMAZENA TODOS OS PROCESSOS PENDENTES
SELECT
IdProcesso as IdProcesso,
ROW_NUMBER() OVER(Order by IdProcesso) AS RowNo
INTO #PROCESSOS_PENDENTE
FROM fornecedores.aceite WHERE FlgEmProcesso = 0
--PERCORRE TODOS OS REGISTROS E ENVIA OS EMAILS
DECLARE @Index INT=1,@TotalCount INT=0
SELECT @TotalCount=COUNT(*) FROM #PROCESSOS_PENDENTE
WHILE @Index<[email protected]
BEGIN
SET @IdProcesso=''
SELECT @IdProcesso=IdProcesso FROM #PROCESSOS_PENDENTE WHERE [email protected]
SET @Parans = '<Zfif0004Processo><IEmail></IEmail><IIdProcesso>' + @IdProcesso + '</IIdProcesso></Zfif0004Processo>';
--CONSULTA NO SAP SE O PROCESSO FOI CONCLUIDO COM SUCESSO
--O RETORNO CHAMARA A PROCEDURE
--QUE FICARA RESPONSAVEL EM ENVIAR O EMAIL PARA O FORNECEDOR
EXEC Geral.prAddMsgOnKolQueue
@SourceAppName ='TEXT'
,@TargetAppName ='TEXT'
,@TopicName ='TEXT'
,@Tag = 'TEXT'
,@TextData = @Parans;
--ALTERAR O STATAUS DO PROCESSO PARA "EM PROCESSO"
UPDATE fornecedores.aceite set FlgEmProcesso = 1
WHERE IdProcesso = @IdProcesso
SET @[email protected]+1
--EXCLUI REGISTRO DA TABELA TEMPORARIA
--DELETE #PROCESSOS_PENDENTE Where IdProcesso = @IdProcesso
END
你並不需要一個循環。一個更新語句將會執行 –
但是它需要搜索表中的很多行,並更新FlgEmProcesso中狀態爲0的所有人。 –
@ViniciusCano是的,但是這正是數據庫引擎爲你正確使用SQL所做的。 – jeroenh