如果table为null,如何设置属性表?

时间:2011-10-28 17:48:08

标签: sql sql-server-2008

如果#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 

1 个答案:

答案 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循环代替光标来更好地执行它。

相关问题