我有一個存儲過程,它接受一個XML參數並將「實體」節點作爲記錄插入表中。這可以正常工作,除非其中一個數字字段的值爲XML中的空字符串。然後它拋出一個「錯誤轉換數據類型nvarchar數值」錯誤。帶有XML參數的SQL Server插入 - 數字爲空的字符串不轉換爲空
有沒有一種方法可以讓我告訴SQL將空字符串轉換爲空值,用於下面代碼中的那些數字字段?
-- @importData XML <- stored procedure param
DECLARE @l_index INT
EXECUTE sp_xml_preparedocument @l_index OUTPUT, @importData
INSERT INTO dbo.myTable
(
[field1]
,[field2]
,[field3]
)
SELECT
[field1]
,[field2]
,[field3]
FROM OPENXML(@l_index, 'Entities/Entity', 1)
WITH
(
field1 int 'field1'
,field2 varchar(40) 'field2'
,field3 decimal(15, 2) 'field3'
)
EXECUTE sp_xml_removedocument @l_index
編輯:如果它有幫助,示例XML。除非我在上面的代碼中註釋掉field3或在下面的field3中提供一個值,否則會引發錯誤。
<?xml version="1.0" encoding="utf-16"?>
<Entities>
<Entity>
<field1>2435</field1>
<field2>843257-3242</field2>
<field3 />
</Entity>
</Entities>
我在另一個線程通知,性能會更糟糕......但是我如果我找不到其他解決方案,可能需要嘗試。 – Mayo 2010-04-29 16:05:55
性能對成千上萬的記錄不利,但它給了我一個想法,我真的很感謝你的幫助,因爲我不會在沒有看到你的代碼的情況下得到這個想法。另外,我認爲你的解決方案適用於較小的數據集(和/或更快的服務器)。 – Mayo 2010-04-29 16:30:48