我确信之前已经回答过,但我找不到合适的术语来找到答案。
基本上,我有一个非常简单的表,有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
无法将值NULL插入列'DepartmentID',表'RCH.Accounting.DepartmentProcedure';列不允许空值。 INSERT失败。
对于我的生活,我无法弄清楚如何处理这个问题。
提前致谢
答案 0 :(得分: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')
这会将从XML中提取的<DepartmentID>
值插入DepartmentID
列。
点击此处详细了解XQuery support in SQL Server 2005或阅读Introduction to XQuery in SQL Server 2005 on MSDN