永続的なテーブルへの挿入方法

私は他のプロシージャ(これはデータのいくつかの行を返す)を呼び出すこのストアドプロシージャを持っています。

最初の手順では、すべての行を永続テーブルに挿入し、このテーブルの内容を返す必要があります。私はこれを持っていますが、一時的なテーブルを持っています。

永続的なテーブルに挿入して戻すにはどうすればよいですか?

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[paBltBuscarBoletasASA] @id_Asa int  
      -- Add the parameters for the stored procedure here
AS
DECLARE @Query int
CREATE TABLE #tablaTemporal (Numero_Pregunta varchar, Numero_Boleta int, Cultivo varchar, Numero_Siembra int, Detalle_Error varchar)
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 @Query

WHILE @@FETCH_STATUS = 0
BEGIN
 INSERT INTO #tablaTemporal(Numero_Pregunta, Numero_Boleta, Cultivo, Numero_Siembra, Detalle_Error) exec dbo.paBltMarcarErroresBoleta @Query

    FETCH NEXT FROM miCursor INTO @Query
END

CLOSE miCursor
DEALLOCATE miCursor 
1
追加された 著者 marc_s,
INSERT INTO ステートメントを使用して、一時テーブルに挿入するのとまったく同じ方法で永続テーブルに挿入します。唯一の違いは、冒頭にあるまたは ## のテーブル名が一時テーブルであることです。
追加された 著者 marc_s,
なぜあなたはカーソルを使用していますか?カーソルを使用する必要はなく、データベースを使用してデータベースを束縛しないでください。カーソルは(この場合のように)しばしばSQLの反パターンであり、本番用コードではほとんど使用されません。カーソルを使用して複数のrcord挿入を処理するために、1レコードprocを再使用してデータを挿入したり、データを更新したりしないでください。複数のレコード挿入を正しくハンドリングするようにプロダクトを調整します。
追加された 著者 HLGEM,
コードが実行されるたびに永続テーブルを新しいデータに置き換える必要がありますか、または蓄積されたデータを返す必要がありますか?
追加された 著者 HLGEM,

2 答え

これは、ストアドプロシージャの一番下に置いて、一時テーブルを永続的なテーブルにコピーすることができます。

-- To insert into a permanent table
INSERT INTO MyPermanentTable (Numero_Pregunta, Numero_Boleta, Cultivo, 
                              Numero_Siembra, Detalle_Error)
SELECT Numero_Pregunta, Numero_Boleta, Cultivo, Numero_Siembra, Detalle_Error
FROM   #tablaTemporal

-- To get the result set that was added back to the caller
SELECT Numero_Pregunta, Numero_Boleta, Cultivo, Numero_Siembra, Detalle_Error
FROM   #tablaTemporal
1
追加された

ストアド・プロシージャの結果を永続データベース・テーブルに格納する場合は、次の操作を実行できます。

INSERT INTO MyPermenantTable Execute [dbo].[paBltBuscarBoletasASA] parameter1, parameter2

上のクエリは私のために働いた...それもあなたのために働くことを願っています。

0
追加された