如果#tablaTemporal = null,我需要设置表Blt_Boleta.ti_Pk_IdEstadoRevision = 3的属性。我想在插入和FETCH NEXT FROM miCursor INTO @boletaActual之间进行此操作。也许有这样的伯爵或者像这样的人......
那我怎么能这样做呢?
ALTER PROCEDURE [dbo].[paBltBuscarBoletasASA] @id_Asa int
-- Add the parameters for the stored procedure here
AS
DECLARE @boletaActual int
CREATE TABLE #tablaTemporal
(
Numero_Pregunta varchar(250),
Numero_Boleta char(8),
Cultivo varchar(250),
Numero_Siembra int,
Detalle_Error varchar(250)
)
DECLARE miCursor CURSOR FOR
SELECT
localizacion.c_Fk_IdBoleta
FROM
Blt_Boleta as boleta, Fnc_Localizacion as localizacion
WHERE
boleta.c_Pk_IdBoleta = localizacion.c_Fk_IdBoleta AND
localizacion.si_CodAsa = @id_Asa
OPEN miCursor
FETCH NEXT FROM miCursor INTO @boletaActual
WHILE @@FETCH_STATUS = 0
BEGIN
INSERT INTO #tablaTemporal
(Numero_Pregunta, Numero_Boleta, Cultivo, Numero_Siembra, Detalle_Error)
exec dbo.paBltMarcarErroresBoleta @boletaActual
FETCH NEXT FROM miCursor INTO @boletaActual
END
CLOSE miCursor
DEALLOCATE miCursor
SELECT * FROM #tablaTemporal
答案 0 :(得分:0)
您无法检查#tableTemporal
是否为空,因为它永远不会。您可能想要在exec paBltMarcarErroresBoleta
之后检查是否有行插入到#tableTemporal中。
如果我理解正确,我认为你可以在exec dbo.paBltMarcarErroresBoleta @boletaActual
之后做:
DECLARE miCursor CURSOR FOR
SELECT
localizacion.c_Fk_IdBoleta
FROM
Blt_Boleta as boleta, Fnc_Localizacion as localizacion
WHERE
boleta.c_Pk_IdBoleta = localizacion.c_Fk_IdBoleta AND
localizacion.si_CodAsa = @id_Asa
FOR UPDATE OF Blt_Boleta.ti_Pk_IdEstadoRevision
在exec dbo.paBltMarcarErroresBoleta @boletaActual
之后
if not exists(select 1 from #tableTemporal)
update Blt_Boleta
set Blt_Boleta.ti_Pk_IdEstadoRevision=3
where current of miCursor
但是你可以用一个简单的while循环代替光标来更好地执行它。