0
我正在將插入和刪除的表中的數據捕獲爲xml並將其保存到審計日誌中,但由於某些原因開始生成空元素爲空值。這似乎違背它說的文檔:對於XML *,即使我沒有使用XSINIL,ELEMENTS也會生成空元素
元素指令構造XML,其中每一列值映射 在XML的元素。如果列值爲NULL,則沒有元素是 添加。通過在ELEMENTS 指令中指定可選的XSINIL參數,可以請求爲 NULL值創建一個元素。在這種情況下,將爲每個NULL列值返回一個具有設置爲TRUE的xsi:nil屬性 的元素。
我很確定我沒有使用XSINIL參數,但元素創建的都是一樣的。我試過玩代模式;嘗試RAW,AUTO等,但空標籤保持不變。
它是一個動態生成的查詢,看起來像:
'SET @LogData =
CASE
WHEN @EventType = @Insert
THEN
(
SELECT ' + @ColumnList + '
FROM Inserted
FOR XML RAW, ELEMENTS
)
WHEN @EventType = @Delete
THEN
(
SELECT ' + @ColumnList + '
FROM Deleted Rows
FOR XML RAW, ELEMENTS
)
END;'
哪裏@LogData是xml
型和@ColumnList的格式爲:
[Column1Name],
[Column2Name]
可以顯示具有此行爲的查詢嗎?在某些情況下,當您在字段列表中進行子查詢時,最終會得到空標籤。 – 2012-04-20 18:50:08
我無法重現您使用您在此發佈的代碼所看到的內容。我沒有得到空的元素。 – 2012-04-21 09:42:14
這很奇怪。每次運行查詢時,我都可以重現該問題。當然,這是一個觸發器。我在觸發器之外運行了類似的查詢,它們的行爲與預期相同。 – 2012-04-23 13:24:17