【问题标题】:inserting multiple rows through stored proc using XML使用 XML 通过存储过程插入多行
【发布时间】:2012-06-03 05:17:59
【问题描述】:

我正在尝试按照存储过程一次性插入全班(多名学生)的出勤率。

CREATE PROCEDURE [dbo].[usp_add_attendanceByLectureId] 
    -- Add the parameters for the stored procedure here
    @pLectureId int,
    @pUsersXml xml  
AS
BEGIN
   --SET NOCOUNT ON;

    INSERT INTO AcademicAttendance(StudentId, LectureId, [Status])      
    select M.Item.value('StudentId[1]','INT') as StudentId, -- here error occured
    @pLectureId as LectureId,
    M.Item.value('Status','BIT') as [Status]
    FROM @pUsersXml.nodes('/ArrayOfStudnts/Student') AS M(Item)

END

在创建上述 sp 时发生以下错误

消息 2389,级别 16,状态 1,过程 usp_add_attendanceByLectureId,第 17 行 XQuery [value()]: 'value()' 需要一个单例(或空序列),找到类型为 'xdt:untypedAtomic *' 的操作数

【问题讨论】:

    标签: sql sql-server tsql ado.net


    【解决方案1】:

    使用

    M.Item.value('Status[1],'BIT') as [Status]
    

    而不是

    M.Item.value('Status','BIT') as [Status]
    

    【讨论】:

    • 我们总是犯愚蠢的错误,但是当我们感到沮丧时,向别人寻求帮助是件好事。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-10
    • 2014-03-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多