将数据从存储过程插入临时表



我有一个名为Sp_Ejecucion的存储过程,它创建了一个具有以下结构的临时表:

CREATE TABLE #CambioResult (FOL INT IDENTITY, RESULT INT)

并且在该命令之后运行另一个Sp,如下

BEGIN TRAN T1
DECLARE @vnCambiaRollTurnoResult    INT = 0,
@vnReacomodoMarcajesResult  INT = 0,
@Result                     INT = 0
BEGIN TRY
exec nsp_Exec                   @nClaEmp        = @pnClaEmpresa, 
@nClaTrab       = @pnClaTrab, 

END TRY
BEGIN CATCH
GOTO RETURN_ERROR
END CATCH

在第二个存储区的内部,我想将数据插入到第一个存储区中创建的表中,我该怎么做?我的意图是:

INSERT INTO OBJECT_ID('tempdb..#CambioResult')
select @Error

一方出现错误OBJECT_ID

在嵌套过程中插入时,您将能够在嵌套过程内引用父过程临时表#CambioResult

您必须在嵌套过程中更改INSERT语句:nsp_Exec,如下所示:

INSERT INTO #CambioResult
SELECT ....

关于临时表范围,参考msdn

临时表超出范围时会自动删除,除非使用DROP TABLE显式删除:

  • 存储过程中创建的本地临时表将在存储过程完成时自动删除。该表可以是由存储的执行的任何嵌套存储过程引用创建表的过程。表不能由引用调用创建表的存储过程的进程