Как установить таблицу свойств, если таблица пуста? - PullRequest
0 голосов
/ 28 октября 2011

Мне нужно SET свойство таблицы Blt_Boleta.ti_Pk_IdEstadoRevision = 3, если #tablaTemporal = null. Я думал сделать это между Insert и 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 голосов
/ 29 октября 2011

Вы не можете проверить, является ли #tableTemporal нулевым, потому что никогда не будет. Возможно, вы хотели проверить, есть ли строки, вставленные в #tableTemporal после выполнения exec paBltMarcarErroresBoleta.

Если я правильно понял, я думаю, вы могли бы сделать после 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 вместо курсора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...