我已經繼承了1500行存儲過程,該過程聲明瞭在整個過程的整個生命週期中經常改變狀態的大量變量。我們有一個邏輯錯誤,證明它非常難以追蹤,因此有責任將有限時間的變量寫入日誌表。我的解決方案是獲取每個變量並將它們填充到XML中,並將它們記錄在沒有索引的表中,以便在寫入過程中儘可能快地進行記錄。這是不得已而爲之的,但我們有一百萬美元的差距來解決這個問題,而不是很多時間去挖掘。FOR XML無FROM
因此,解決方案將是這樣的一個星期內,當我們運行PROC:
- 過程聲明並初始化數據到變量。
- 函數被調用,記錄狀態
- 程序做了一大堆更多的代碼改變狀態
- 函數被調用,記錄狀態
- 程序做大量的多。
- 函數被調用來記錄狀態。
我的問題是這樣的。
DECLARE @TESTSTRING VARCHAR(MAX)
DECLARE @TESTINTEGER INT
DECLARE @TESTDATE DATETIME = GETDATE()
SELECT @TESTSTRING, @TESTINTEGER, @TESTDATE FOR XML...
是否可以通過以某種方式選擇它們來以XML的形式輸出變量?我通常知道FOR XML語法要求它在FROM子句之後。在這種情況下,我不會有。如果情況並非如此......這有多昂貴?
DECLARE @TESTSTRING VARCHAR(MAX)
DECLARE @TESTINTEGER INT
DECLARE @TESTDATE DATETIME = GETDATE()
SELECT
*
FROM
(SELECT @TESTSTRING AS TESTSTRING, @TESTINTEGER AS TESTINTEGER, @TESTDATE AS TESTDATE) AS S
FOR XML PATH('VAR'), ROOT('TESTTABLE')
我沒有把它在我的例子,但我會在ELEMENTS XSINIL這將只是PLACEHOLD空值進行定位焊。我並不擔心你的例子中所做的初始化。但我應該指定。感謝你的快速回復! –
其實,這確實回答了我的問題。剛剛嘗試了您使用@outputxml變量所做的變體。非常感謝! –