2011-10-28 7 views
0

#tablaTemporal = nullの場合、テーブルのプロパティをBlt_Boleta.ti_Pk_IdEstadoRevision = 3に設定する必要があります。私は、挿入とFETCH NEXT FROM miCursor INTO @boletaActualの間でこれを行うと考えていました。たぶんこのようなカウントやsomethigと...どのようにテーブルがnullの場合にプロパティテーブルを設定しますか?

どうすればいいですか?

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

テーブル「#tableTemporal」が存在しない場合、またはその中の何らかの値が存在しない場合は、 'Blt_boleta'を更新しますか? SQL Serverには、情報のスキーマ(私が知っている他のほとんどのRDBMSと同じ)が必要です。テーブルには、テーブルの列の情報が入っています。私はあなたのものが何であるか知りませんし、私は一時的なテーブルがそこで参照されていないことを少し心配しています。行の存在に基づいて更新したいだけなら、それは簡単です(通常は1つの文です)。テーブルの存在に基づいて、エラーをチェックできる場合は、ストアドプロシージャでそのテーブルを実行することができます。 –

答えて

0

あなたはそれがなることはありませんので、#tableTemporalがnullであるかどうかを確認することはできません。おそらく、あなたが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ループの代わりに、より良いこれを実行することができますカーソル。

関連する問題