2012-02-26 27 views
1

我確信這已經被回答了,但是我找不到正確的術語來找到答案。在SQL Server 2008中插入一個常量/變量和XML一起

基本上,我有一個非常簡單的表格2列,這兩個數據類型爲int現在

,我試圖插入N條記錄到表中的一列通過XML提供爲使:

<Data> 
    <DepartmentID>{x}</DepartmentID> 
</Data> 

具有常數值@ProcedureID沿着正被沿着作爲一個變量對存儲過程通過。

我試圖做到以下幾點:

EXEC sp_xml_preparedocument @Handle OUTPUT, @Tags 

INSERT INTO Accounting.DepartmentProcedure 
(ProcedureID,DepartmentID) 
SELECT @ProcedureID,DepartmentID 
FROM OPENXML(@Handle,'/Data/DepartmentID',2) WITH (DepartmentID int) 

上述解析正常,但運行它給了我下面的錯誤:

Msg 515, Level 16, State 2, Line 7
Cannot insert the value NULL into column 'DepartmentID', table 'RCH.Accounting.DepartmentProcedure'; column does not allow nulls. INSERT fails.

對於我的生活,我可以」弄清楚如何處理這個問題。

在此先感謝

回答

1

我會在SQL Server中使用內置的XQuery功能:

DECLARE @input XML = '<Data> 
    <DepartmentID>{x}</DepartmentID> 
</Data>' 

INSERT INTO 
    dbo.Accounting.DepartmentProcedure(ProcedureID, DepartmentID) 

    SELECT 
     @ProcedureID, 
     @input.value('(/Data/DepartmentID)[1]', 'int') 

這將插入的<DepartmentID>從XML提取到DepartmentID列的值。

去這裏閱讀更多關於XQuery support in SQL Server 2005或閱讀Introduction to XQuery in SQL Server 2005 on MSDN

+0

榮譽的人,你能提出任何引用內置的XQuery的功能? – 2012-02-26 11:28:42

+0

@MustafaIsmailMustafa:我在答案中有兩個鏈接 - 這些都是很好的起點。否則:在MSDN上搜索「XQuery」 - 那裏有大量的材料 – 2012-02-26 11:29:21