【发布时间】:2022-01-24 01:51:15
【问题描述】:
我有一个名为 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
pero marca error en esta parte OBJECT_ID
【问题讨论】:
-
临时表仅在创建它的范围内持续存在。如果您在过程中创建临时表,那么一旦过程完成,它将被隐式删除。如果您想在过程之间传递数据,那么一种方法是让第一个将数据作为表类型参数传递给第二个。
-
如果您在创建临时表的第一个过程中调用一个过程,则该表将在嵌套过程中可见 - 您只需将其插入其中
insert into #CambioResult(Result) select @error -
或者你可以在两个存储过程之外创建表,那么它只会在你的外部过程或批处理完成后被删除
标签: sql sql-server tsql