输入参数:xml数据类型  功能:新增和修改  --value() 方法从 XML 中检索 rogue 属性值。然后将该值分配给 int 变量。
--将 Member 节点拆分成多行  
  • SELECT T.c.query('.') AS result 
  • FROM   @x.nodes('/root/Member') T(c);
 
 
/****** Object: Procedure [dbo].[UP_ConfScheduled_AddScheduledConf]   Script Date: 2014-3-17 9:16:26 ******/
USE [ytSummitTeleConf_DB];
GO
SET ANSI_NULLS ON;
GO
SET QUOTED_IDENTIFIER ON;
GO

/*=============================================================

=============================================================*/
CREATE PROCEDURE [dbo].[UP_ConfScheduled_AddScheduledConf]
    @BookConf XML,
    @MemberList XML
AS
SET NOCOUNT ON

/*
--预约会议信息
<Root>
    <ConfRoom>4F3A595F-DCAF-49DD-806F-1E4BA0F58D33</ConfRoom>
    <SeqNo>254941</SeqNo>
    <MasterMebID>C8C71FAE-8365-4501-8EC0-4C32120A5CE3</MasterMebID>
    <ConfTitle>2014-2-2会议</ConfTitle>
    <BookTime>2014-1-17 0:00:00</BookTime>
    <ConfType>1</ConfType>
    <AddConfMode>0</AddConfMode>
    <WriteTime>2014-1-17 11:56:27</WriteTime>
    <Status>10</Status>
    <IsRecord>0</IsRecord>
</Root>

--预约会议成员列表
<Root>
    <Member>
        <Phoneno>01052810000,8312</Phoneno>
        <Name>主持人</Name>
        <Mode>1</Mode>
        <MebGuid>C8C71FAE-8365-4501-8EC0-4C32120A5CE3</MebGuid>
        <AddTime>2014-1-17 11:55:02</AddTime>
        <IsModerator>True</IsModerator>
    </Member>
</Root>
*/

DECLARE 
    @ConfRoom UNIQUEIDENTIFIER,
    @BookTime DATETIME

SELECT
    @BookTime = T.c.value('(./BookTime/text())[1]', 'DATETIME'),
    @ConfRoom = T.c.value('(./ConfRoom/text())[1]', 'UNIQUEIDENTIFIER')
FROM @BookConf.nodes('Root') AS T(c)

IF EXISTS
(
    SELECT 1
    FROM dbo.WTC_TB_BOOKCONF
    WHERE CONFROOM = @ConfRoom
)
BEGIN
    UPDATE A
    SET A.BookTime = B.BookTime,
        A.ConfTitle = B.ConfTitle,
        A.ConfType = B.ConfType,
        A.AddConfMode = B.AddConfMode,
        A.WRITETIME = B.WRITETIME,
        A.[Status] = B.[Status],
        A.IsRecord = B.IsRecord,
        A.MasterMebID = B.MasterMebID
    FROM dbo.WTC_TB_BOOKCONF A
        INNER JOIN 
        (
            SELECT
                BookTime = @BookTime,
                SeqNo = T.c.value('(./SeqNo/text())[1]', 'INT'),
                ConfRoom = @ConfRoom,
                ConfTitle = T.c.value('(./ConfTitle/text())[1]', 'VARCHAR(256)'),
                ConfType = T.c.value('(./ConfType/text())[1]', 'TINYINT'),
                AddConfMode = T.c.value('(./AddConfMode/text())[1]', 'TINYINT'),
                WRITETIME = T.c.value('(./WriteTime/text())[1]', 'DATETIME'),
                [Status] = T.c.value('(./Status/text())[1]', 'TINYINT'),
                IsRecord = T.c.value('(./IsRecord/text())[1]', 'TINYINT'),
                MasterMebID = T.c.value('(./MasterMebID/text())[1]', 'UNIQUEIDENTIFIER')
            FROM @BookConf.nodes('Root') AS T(c)
        ) B
            ON A.CONFROOM = B.ConfRoom
END
ELSE
BEGIN
    INSERT INTO WTC_TB_BOOKCONF
    ( 
        BOOKTIME,
        SeqNo,
        CONFROOM,
        CONFTITLE,
        CONFTYPE,
        ADDCONFMODE,
        WRITETIME,
        [STATUS],
        IsRecord,
        MasterMebID
    )
    SELECT
        BookTime = T.c.value('(./BookTime/text())[1]', 'DATETIME'),
        SeqNo = T.c.value('(./SeqNo/text())[1]', 'INT'),
        @ConfRoom,
        ConfTitle = T.c.value('(./ConfTitle/text())[1]', 'VARCHAR(256)'),
        ConfType = T.c.value('(./ConfType/text())[1]', 'TINYINT'),
        AddConfMode = T.c.value('(./AddConfMode/text())[1]', 'TINYINT'),
        WRITETIME = T.c.value('(./WriteTime/text())[1]', 'DATETIME'),
        [Status] = T.c.value('(./Status/text())[1]', 'TINYINT'),
        IsRecord = T.c.value('(./IsRecord/text())[1]', 'TINYINT'),
        MasterMebID = T.c.value('(./MasterMebID/text())[1]', 'UNIQUEIDENTIFIER')
    FROM @BookConf.nodes('Root') AS T(c)
END

IF EXISTS
(
    SELECT 1
    FROM dbo.WTC_TB_BOOKCONFQUEUE
    WHERE CONFROOM = @ConfRoom
)
BEGIN
    UPDATE dbo.WTC_TB_BOOKCONFQUEUE
    SET BOOKTIME = @BookTime
    WHERE CONFROOM = @ConfRoom
END
ELSE 
BEGIN
    INSERT INTO dbo.WTC_TB_BOOKCONFQUEUE
    ( 
        CONFROOM, 
        BOOKTIME, 
        [STATUS] 
    )
    VALUES
    (
        @ConfRoom, 
        @BookTime, 
        0
    )
END

IF EXISTS
(
    SELECT 1
    FROM dbo.WTC_TB_BOOKMEMBER WITH(NOLOCK)
    WHERE CONFROOM = @ConfRoom
)
BEGIN
    DELETE dbo.WTC_TB_BOOKMEMBER
    WHERE CONFROOM = @ConfRoom
END

INSERT INTO dbo.WTC_TB_BOOKMEMBER
( 
    MebID,
    CONFROOM,
    PHONENO,
    PHONENOTE,
    MEMBERTYPE
)
SELECT
    MebGuid = T.c.value('(./MebGuid/text())[1]', 'UNIQUEIDENTIFIER'),
    ConfRoom = @ConfRoom,
    Phoneno = T.c.value('(./Phoneno/text())[1]', 'VARCHAR(32)'),
    Name = T.c.value('(./Name/text())[1]', 'VARCHAR(128)'),
    Mode = T.c.value('(./Mode/text())[1]', 'TINYINT')
FROM @MemberList.nodes('Root/Member') AS T(c)

GO
View Code

相关文章:

  • 2021-08-14
  • 2021-07-01
  • 2021-10-07
  • 2022-12-23
  • 2021-06-28
  • 2021-10-26
  • 2022-01-09
  • 2022-02-07
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-10-12
  • 2022-12-23
  • 2021-04-12
相关资源
相似解决方案