1

我确定这已经被回答过,但我找不到正确的命名法来找到答案。

基本上,我有一个非常简单的表,有 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)

上面的解析很好,但运行它会给我以下错误:

消息 515,级别 16,状态 2,第 7 行
无法将值 NULL 插入到列 'DepartmentID',表 'RCH.Accounting.DepartmentProcedure';列不允许空值。插入失败。

对于我的生活,我无法弄清楚如何处理这个问题。

提前致谢

4

1 回答 1

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列中。

转到此处阅读有关 SQL Server 2005 中的XQuery 支持的更多信息或阅读MSDN 上的 SQL Server 2005 中的 XQuery 简介

于 2012-02-26T11:19:32.693 回答