He estado leyendo acerca de las diferencias entre las variables de tabla y tablas de temperatura y tropecé con el siguiente problema con la variable de tabla. No vi este tema mencionado en los artículos que perseguí.Problema de actualización de la variable de la tabla SQL Server 2005
Paso en una serie de PK a través de un tipo de datos XML y creo exitosamente los registros en ambas estructuras de tablas temporales. Cuando intento actualizar más campos en las tablas temporales, la variable de tabla falla, pero la tabla temporal no tiene ningún problema con la instrucción de actualización. ¿Qué hay que hacer diferente? Me gustaría aprovechar la velocidad de impulsar que las variables de tabla promesa ...
Éstos son los fragmentos y Resultados SP:
CREATE PROCEDURE ExpenseReport_AssignApprover
(
@ExpenseReportIDs XML
)
AS
DECLARE @ERTableVariable TABLE ( ExpenseReportID INT,
ExpenseReportProjectID INT,
ApproverID INT)
CREATE TABLE #ERTempTable
(
ExpenseReportID INT,
ExpenseReportProjectID INT,
ApproverID INT
)
INSERT INTO @ERTableVariable (ExpenseReportID)
SELECT ParamValues.ID.value('.','VARCHAR(20)')
FROM @ExpenseReportIDs.nodes('/Root/ExpenseReportID') as ParamValues(ID)
INSERT INTO #ERTempTable (ExpenseReportID)
SELECT ParamValues.ID.value('.','VARCHAR(20)')
FROM @ExpenseReportIDs.nodes('/Root/ExpenseReportID') as ParamValues(ID)
UPDATE #ERTempTable
SET ExpenseReportProjectID = ( SELECT TOP 1 ExpenseReportProjectID
FROM ExpenseReportItem
WHERE(ExpenseReportID = #ERTempTable.ExpenseReportID))
UPDATE @ERTableVariable
SET ExpenseReportProjectID = ( SELECT TOP 1 ExpenseReportProjectID
FROM ExpenseReportItem
WHERE(ExpenseReportID = @ERTableVariable.ExpenseReportID))
de error cuando la última instrucción de actualización de allí: debe declarar la variable escalar "@ ERTableVariable ".
ExpenseReportProjectID se actualiza en #ERTempTable cuando la última actualización está comentado:
Gracias, voy a poner eso en mi bolsa de trucos ... –