我一直在閱讀表變量和臨時表之間的差異,並偶然發現了表變量的下列問題。我沒有看到我追求的文章中提到的這個問題。SQL Server 2005表變量更新問題
我通過XML數據類型傳入一系列PK,併成功在兩個臨時表結構中創建記錄。當我嘗試更新臨時表中的更多字段時,表變量失敗,但臨時表對於更新語句沒有問題。需要做什麼不同?我想利用速度的優勢,促進該表變量的諾言......
這裏是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))
錯誤時,最後的更新語句有: 必須聲明標量變量「@ ERTableVariable」。
ExpenseReportProjectID在#ERTempTable更新時最後一次更新被註釋掉:
謝謝,我會把它放在我的竅門中...... – 2008-11-06 20:23:38