输入参数:xml数据类型  功能:新增和修改  --value() 方法从 XML 中检索 rogue 属性值。然后将该值分配给 int 变量。
--将 Member 节点拆分成多行

  • SELECT T.c.query('.') AS result
  • FROM   @x.nodes('/root/Member') T(c);

 
  1. /****** Object: Procedure [dbo].[UP_ConfScheduled_AddScheduledConf] Script Date: 2014-3-17 9:16:26 ******/
  2. USE [ytSummitTeleConf_DB];
  3. GO
  4. SET ANSI_NULLS ON;
  5. GO
  6. SET QUOTED_IDENTIFIER ON;
  7. GO
  8.  
  9. /*=============================================================
  10.  
  11. =============================================================*/
  12. CREATE PROCEDURE [dbo].[UP_ConfScheduled_AddScheduledConf]
  13. @BookConf XML,
  14. @MemberList XML
  15. AS
  16. SET NOCOUNT ON
  17.  
  18. /*
  19. --预约会议信息
  20. <Root>
  21. <ConfRoom>4F3A595F-DCAF-49DD-806F-1E4BA0F58D33</ConfRoom>
  22. <SeqNo>254941</SeqNo>
  23. <MasterMebID>C8C71FAE-8365-4501-8EC0-4C32120A5CE3</MasterMebID>
  24. <ConfTitle>2014-2-2会议</ConfTitle>
  25. <BookTime>2014-1-17 0:00:00</BookTime>
  26. <ConfType>1</ConfType>
  27. <AddConfMode>0</AddConfMode>
  28. <WriteTime>2014-1-17 11:56:27</WriteTime>
  29. <Status>10</Status>
  30. <IsRecord>0</IsRecord>
  31. </Root>
  32.  
  33. --预约会议成员列表
  34. <Root>
  35. <Member>
  36. <Phoneno>01052810000,8312</Phoneno>
  37. <Name>主持人</Name>
  38. <Mode>1</Mode>
  39. <MebGuid>C8C71FAE-8365-4501-8EC0-4C32120A5CE3</MebGuid>
  40. <AddTime>2014-1-17 11:55:02</AddTime>
  41. <IsModerator>True</IsModerator>
  42. </Member>
  43. </Root>
  44. */
  45.  
  46. DECLARE
  47. @ConfRoom UNIQUEIDENTIFIER,
  48. @BookTime DATETIME
  49.  
  50. SELECT
  51. @BookTime = T.c.value('(./BookTime/text())[1]', 'DATETIME'),
  52. @ConfRoom = T.c.value('(./ConfRoom/text())[1]', 'UNIQUEIDENTIFIER')
  53. FROM @BookConf.nodes('Root') AS T(c)
  54.  
  55. IF EXISTS
  56. (
  57. SELECT 1
  58. FROM dbo.WTC_TB_BOOKCONF
  59. WHERE CONFROOM = @ConfRoom
  60. )
  61. BEGIN
  62. UPDATE A
  63. SET A.BookTime = B.BookTime,
  64. A.ConfTitle = B.ConfTitle,
  65. A.ConfType = B.ConfType,
  66. A.AddConfMode = B.AddConfMode,
  67. A.WRITETIME = B.WRITETIME,
  68. A.[Status] = B.[Status],
  69. A.IsRecord = B.IsRecord,
  70. A.MasterMebID = B.MasterMebID
  71. FROM dbo.WTC_TB_BOOKCONF A
  72. INNER JOIN
  73. (
  74. SELECT
  75. BookTime = @BookTime,
  76. SeqNo = T.c.value('(./SeqNo/text())[1]', 'INT'),
  77. ConfRoom = @ConfRoom,
  78. ConfTitle = T.c.value('(./ConfTitle/text())[1]', 'VARCHAR(256)'),
  79. ConfType = T.c.value('(./ConfType/text())[1]', 'TINYINT'),
  80. AddConfMode = T.c.value('(./AddConfMode/text())[1]', 'TINYINT'),
  81. WRITETIME = T.c.value('(./WriteTime/text())[1]', 'DATETIME'),
  82. [Status] = T.c.value('(./Status/text())[1]', 'TINYINT'),
  83. IsRecord = T.c.value('(./IsRecord/text())[1]', 'TINYINT'),
  84. MasterMebID = T.c.value('(./MasterMebID/text())[1]', 'UNIQUEIDENTIFIER')
  85. FROM @BookConf.nodes('Root') AS T(c)
  86. ) B
  87. ON A.CONFROOM = B.ConfRoom
  88. END
  89. ELSE
  90. BEGIN
  91. INSERT INTO WTC_TB_BOOKCONF
  92. (
  93. BOOKTIME,
  94. SeqNo,
  95. CONFROOM,
  96. CONFTITLE,
  97. CONFTYPE,
  98. ADDCONFMODE,
  99. WRITETIME,
  100. [STATUS],
  101. IsRecord,
  102. MasterMebID
  103. )
  104. SELECT
  105. BookTime = T.c.value('(./BookTime/text())[1]', 'DATETIME'),
  106. SeqNo = T.c.value('(./SeqNo/text())[1]', 'INT'),
  107. @ConfRoom,
  108. ConfTitle = T.c.value('(./ConfTitle/text())[1]', 'VARCHAR(256)'),
  109. ConfType = T.c.value('(./ConfType/text())[1]', 'TINYINT'),
  110. AddConfMode = T.c.value('(./AddConfMode/text())[1]', 'TINYINT'),
  111. WRITETIME = T.c.value('(./WriteTime/text())[1]', 'DATETIME'),
  112. [Status] = T.c.value('(./Status/text())[1]', 'TINYINT'),
  113. IsRecord = T.c.value('(./IsRecord/text())[1]', 'TINYINT'),
  114. MasterMebID = T.c.value('(./MasterMebID/text())[1]', 'UNIQUEIDENTIFIER')
  115. FROM @BookConf.nodes('Root') AS T(c)
  116. END
  117.  
  118. IF EXISTS
  119. (
  120. SELECT 1
  121. FROM dbo.WTC_TB_BOOKCONFQUEUE
  122. WHERE CONFROOM = @ConfRoom
  123. )
  124. BEGIN
  125. UPDATE dbo.WTC_TB_BOOKCONFQUEUE
  126. SET BOOKTIME = @BookTime
  127. WHERE CONFROOM = @ConfRoom
  128. END
  129. ELSE
  130. BEGIN
  131. INSERT INTO dbo.WTC_TB_BOOKCONFQUEUE
  132. (
  133. CONFROOM,
  134. BOOKTIME,
  135. [STATUS]
  136. )
  137. VALUES
  138. (
  139. @ConfRoom,
  140. @BookTime,
  141. 0
  142. )
  143. END
  144.  
  145. IF EXISTS
  146. (
  147. SELECT 1
  148. FROM dbo.WTC_TB_BOOKMEMBER WITH(NOLOCK)
  149. WHERE CONFROOM = @ConfRoom
  150. )
  151. BEGIN
  152. DELETE dbo.WTC_TB_BOOKMEMBER
  153. WHERE CONFROOM = @ConfRoom
  154. END
  155.  
  156. INSERT INTO dbo.WTC_TB_BOOKMEMBER
  157. (
  158. MebID,
  159. CONFROOM,
  160. PHONENO,
  161. PHONENOTE,
  162. MEMBERTYPE
  163. )
  164. SELECT
  165. MebGuid = T.c.value('(./MebGuid/text())[1]', 'UNIQUEIDENTIFIER'),
  166. ConfRoom = @ConfRoom,
  167. Phoneno = T.c.value('(./Phoneno/text())[1]', 'VARCHAR(32)'),
  168. Name = T.c.value('(./Name/text())[1]', 'VARCHAR(128)'),
  169. Mode = T.c.value('(./Mode/text())[1]', 'TINYINT')
  170. FROM @MemberList.nodes('Root/Member') AS T(c)
  171.  
  172. GO

取消预约会议-事务处理

  1. /****** Object: Procedure [dbo].[UP_ConfScheduled_CancelScheduledConf] Script Date: 2014-3-17 9:23:26 ******/
  2. USE [ytSummitTeleConf_DB];
  3. GO
  4. SET ANSI_NULLS ON;
  5. GO
  6. SET QUOTED_IDENTIFIER ON;
  7. GO
  8.  
  9. /*=============================================================
  10.  
  11. =============================================================*/
  12. CREATE PROCEDURE [dbo].[UP_ConfScheduled_CancelScheduledConf]
  13. @SeqNo INT,
  14. @ConfRoom UNIQUEIDENTIFIER
  15. AS
  16. SET NOCOUNT ON
  17.  
  18. IF NOT EXISTS
  19. (
  20. SELECT 1
  21. FROM dbo.WTC_TB_BOOKCONF WITH(NOLOCK)
  22. WHERE CONFROOM = @ConfRoom
  23. AND [STATUS] = 0
  24. )
  25. BEGIN
  26. RETURN -1 --预约会议不存在.
  27. END
  28.  
  29. IF EXISTS
  30. (
  31.  
  32. SELECT 1
  33. FROM dbo.WTC_TB_USERCONF WITH(NOLOCK)
  34. WHERE CONFROOM = @ConfRoom
  35. )
  36. BEGIN
  37. RETURN -2 --会议已经召开.
  38. END
  39.  
  40. BEGIN TRY
  41. BEGIN TRAN
  42.  
  43. --取消预约
  44. UPDATE dbo.WTC_TB_BOOKCONF
  45. SET [STATUS] = 3
  46. WHERE CONFROOM = @ConfRoom
  47. AND [STATUS] = 0
  48.  
  49. --删除预约队列
  50. DELETE dbo.WTC_TB_BOOKCONFQUEUE
  51. WHERE CONFROOM = @ConfRoom
  52.  
  53. --保留预约会议信息,以便统计短信等费用
  54. INSERT INTO dbo.WTC_TB_USERCONF
  55. (
  56. CONFROOM,
  57. SeqNo,
  58. CONFTITLE,
  59. CONFTIME,
  60. ISRECORD,
  61. MasterMebID,
  62. Flag
  63. )
  64. SELECT
  65. A.CONFROOM,
  66. A.SeqNo,
  67. A.CONFTITLE,
  68. A.BOOKTIME,
  69. A.IsRecord,
  70. A.MasterMebID,
  71. 20 --取消的预约会议
  72. FROM dbo.WTC_TB_BOOKCONF A WITH(NOLOCK)
  73. WHERE A.CONFROOM = @ConfRoom
  74. AND NOT EXISTS
  75. (
  76. SELECT 1
  77. FROM dbo.WTC_TB_USERCONF B WITH(NOLOCK)
  78. WHERE B.CONFROOM = A.CONFROOM
  79. )
  80.  
  81. INSERT INTO dbo.WTC_TB_USERCONFMEB
  82. (
  83. MebID,
  84. CONFROOM,
  85. PHONENO,
  86. PHONENOTE,
  87. MEMBERTYPE,
  88. ADDCONFTIME,
  89. ADDORDER
  90. )
  91. SELECT
  92. A.MebID,
  93. A.CONFROOM,
  94. A.PHONENO,
  95. A.PHONENOTE,
  96. A.MEMBERTYPE,
  97. GETDATE(),
  98. ROW_NUMBER() OVER(ORDER BY GETDATE())
  99. FROM dbo.WTC_TB_BOOKMEMBER A WITH(NOLOCK)
  100. WHERE CONFROOM = @ConfRoom
  101. AND NOT EXISTS
  102. (
  103. SELECT 1
  104. FROM dbo.WTC_TB_USERCONFMEB B WITH(NOLOCK)
  105. WHERE B.CONFROOM = A.CONFROOM
  106. AND B.MebID = A.MebID
  107. )
  108.  
  109. --保留预约会议信息,以便统计短信等费用
  110. INSERT INTO dbo.WTC_TB_CONFROOM
  111. (
  112. CONFROOM,
  113. SeqNo,
  114. CONFID,
  115. CREATETIME,
  116. CREATEONLINEID,
  117. CONFTITLE,
  118. UPDATETIME,
  119. IsPlayMusic,
  120. CONFTYPE,
  121. CONFDATAKEY,
  122. RECORDTHREADID,
  123. IsRecord
  124. )
  125. SELECT
  126. A.CONFROOM,
  127. A.SeqNo,
  128. 0,
  129. A.BOOKTIME,
  130. A.MasterMebID,
  131. A.CONFTITLE,
  132. GETDATE(),
  133. 0,
  134. 0,
  135. '',
  136. 0,
  137. A.IsRecord
  138. FROM dbo.WTC_TB_BOOKCONF A WITH(NOLOCK)
  139. WHERE A.CONFROOM = @ConfRoom
  140. AND NOT EXISTS
  141. (
  142. SELECT 1
  143. FROM dbo.WTC_TB_CONFROOM B WITH(NOLOCK)
  144. WHERE B.CONFROOM = A.CONFROOM
  145. )
  146.  
  147. INSERT INTO dbo.WTC_TB_CONFMEMBERS
  148. (
  149. MebID,
  150. CONFROOM,
  151. PHONENO,
  152. DATA,
  153. UPDATETIME,
  154. ADDORDER
  155. )
  156. SELECT
  157. A.MebID,
  158. A.CONFROOM,
  159. A.PHONENO,
  160. A.PHONENOTE,
  161. GETDATE(),
  162. ROW_NUMBER() OVER(ORDER BY GETDATE())
  163. FROM dbo.WTC_TB_BOOKMEMBER A WITH(NOLOCK)
  164. WHERE CONFROOM = @ConfRoom
  165. AND NOT EXISTS
  166. (
  167. SELECT 1
  168. FROM dbo.WTC_TB_CONFMEMBERS B WITH(NOLOCK)
  169. WHERE B.CONFROOM = A.CONFROOM
  170. AND B.MebID = A.MebID
  171. )
  172.  
  173. COMMIT TRAN
  174. END TRY
  175. BEGIN CATCH
  176. ROLLBACK TRAN
  177. RETURN -100 --数据库异常
  178. END CATCH
  179.  
  180. GO

获取预约会议

  1. /****** Object: Procedure [dbo].[UP_ConfScheduled_GetScheduledConfs] Script Date: 2014-3-17 9:29:19 ******/
  2. USE [ytSummitTeleConf_DB];
  3. GO
  4. SET ANSI_NULLS ON;
  5. GO
  6. SET QUOTED_IDENTIFIER ON;
  7. GO
  8. /*=============================================================
  9.  
  10. =============================================================*/
  11. CREATE PROCEDURE [dbo].[UP_ConfScheduled_GetScheduledConfs]
  12. @SeqNo INT
  13. AS
  14. SET NOCOUNT ON
  15.  
  16. SELECT
  17. A.CONFROOM
  18. ,A.CONFTITLE
  19. ,A.BOOKTIME
  20. ,A.WRITETIME
  21. ,B.MemberCount
  22. ,A.IsRecord
  23. FROM dbo.WTC_TB_BOOKCONF A WITH(NOLOCK)
  24. OUTER APPLY
  25. (
  26. SELECT MemberCount = COUNT(1)
  27. FROM dbo.WTC_TB_BOOKMEMBER B WITH(NOLOCK)
  28. WHERE B.CONFROOM = A.CONFROOM
  29. ) B
  30. WHERE A.SeqNo = @SeqNo
  31. AND A.[STATUS] = 0
  32. ORDER BY A.BOOKTIME desc
  33. GO

修改参会模式

  1. /****** Object: Procedure [dbo].[UP_ConfScheduled_SetParticipantTalkMode] Script Date: 2014-3-17 9:32:26 ******/
  2. USE [ytSummitTeleConf_DB];
  3. GO
  4. SET ANSI_NULLS ON;
  5. GO
  6. SET QUOTED_IDENTIFIER ON;
  7. GO
  8.  
  9. /*=============================================================
  10.  
  11. =============================================================*/
  12. CREATE PROCEDURE dbo.UP_ConfScheduled_SetParticipantTalkMode
  13. @ConfRoom UNIQUEIDENTIFIER,
  14. @MemberList XML
  15. AS
  16. SET NOCOUNT ON
  17. /*
  18. <Root>
  19. <Member>
  20. <MebID>5685C2C9-70B7-4721-AB77-385FEDD7B0CF</MebID>
  21. <MemberType>1</MemberType>
  22. </Member>
  23. <Member>
  24. <MebID>E495548E-55FA-4588-AB9A-99CC7ED3D758</MebID>
  25. <MemberType>4</MemberType>
  26. </Member>
  27. </Root>
  28. */
  29. UPDATE A
  30. SET A.MemberType = B.MemberType
  31. FROM dbo.WTC_TB_BOOKMEMBER A
  32. INNER JOIN
  33. (
  34. SELECT
  35. MebID = T.c.value('(./MebID/text())[1]', 'UNIQUEIDENTIFIER'),
  36. MemberType = T.c.value('(./MemberType/text())[1]', 'TINYINT')
  37. FROM @MemberList.nodes('Root/Member') AS T(c)
  38. ) B
  39. ON A.MebID = B.MebID
  40. WHERE A.CONFROOM = @ConfRoom
  41.  
  42. GO

SQL存储过程-新增和修改,参数Xml数据类型的更多相关文章

  1. 转sql server新增、修改字段语句(整理)

    添加字段的SQL语句的写法: 通用式: alter table [表名] add [字段名] 字段属性 default 缺省值 default 是可选参数增加字段: alter table [表名] ...

  2. SQL——存储过程实例 调用带参数的过程(成绩输出)

    create or replace procedure test_score(input in number,output out char) is begin then begin output : ...

  3. sql批量新增,修改

    <insert id="insertExtDocList" parameterType="map"> INSERT INTO extprjdoc ( ...

  4. 二、sql新增后返回主键|sql 使用 FOR XML PATH实现字符串拼接|sql如果存在就修改不存在就新增

    一.sql新增后返回主键 1,返回自增的主键: INSERT INTO 表名 (字段名1,字段名2,字段名3,…) VALUES (值1,值2,值3,…) SELECT @@IDENTITY 2,返回 ...

  5. SQL Server 2008 对XML 数据类型操作

    原文 http://www.cnblogs.com/qinjian123/p/3240702.html 一.前言 从 SQL Server 2005 开始,就增加了 xml 字段类型,也就是说可以直接 ...

  6. SQL 存储过程 解析XML

    第一种说明: 我看过这样一篇文章,如下 在SQL   Server2005中,微软延续了   2000中一个特性(即支持XML类型的数据),并加强了对XML   数据列.XML变量以及XML索引的支持 ...

  7. SQL Server存储过程Return、output参数及使用技巧

    SQL Server目前正日益成为WindowNT操作系统上面最为重要的一种数据库管理系统,随着 SQL Server2000的推出,微软的这种数据库服务系统真正地实现了在WindowsNT/2000 ...

  8. sql 解析字符串添加到临时表中 sql存储过程in 参数输入

    sql 解析字符串添加到临时表中  sql存储过程in 参数输入 解决方法 把字符串解析 添加到 临时表中 SELECT * into #临时表   FROM dbo.Func_SplitOneCol ...

  9. java 执行sql错误 传入的表格格式数据流(TDS)远程过程调用(RPC)协议流不正确。参数 1 (""): 数据类型 0x38 未知

    连接数据库时设置:Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE ,ResultSet.CONCUR_R ...

随机推荐

  1. jQuery插件开发的两种方法及$.fn.extend的详解

    jQuery插件开发分为两种: 1 类级别 类级别你可以理解为拓展jquery类,最明显的例子是$.ajax(...),相当于静态方法. 开发扩展其方法时使用$.extend方法,即jQuery.ex ...

  2. Android开发教程:shape和selector的结合使用

    shape和selector是Android UI设计中经常用到的,比如我们要自定义一个圆角Button,点击Button有些效果的变化,就要用到shape和selector.可以这样说,shape和 ...

  3. POJ 2251 BFS(简单)

    一道三维的BFS Dungeon Master Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 24003 Accepted: 9 ...

  4. linuxz终端开启echo颜色显示

    echo输出命令echo [选项] [输出内容]-e //支持反斜线控制的字符转换:控制字符:\a //输出警告音:\b //退格键,也就是向左删除键:\n //换行符:\r //回车键:\t //制 ...

  5. applicationCache对象

    applicationCache对象代表了本地缓存,可以在js中进行一些操作.可以用它来通知用户本地缓存中已经被更新,也允许用户手工更新本地缓存.applicationCache.addEventLi ...

  6. mysql 根据某字段特定值排序

    比如: 表 :user 字段:orders (值为 1,2,3) 要求根据字段  orders 按2 -> 1 -> 3 排序 使用以下语句实现SELECT *FROM userORDER ...

  7. 编程:使用递归方式判断某个字串是否回文(Palindrome)

    Answer: import java.util.Scanner; public class Palindrome { private static int len;//全局变量整型数据 privat ...

  8. OpenCV MAT基本图像容器

    参考博客: OpenCv中cv::Mat和IplImage,CvMat之间的转换 Mat - 基本图像容器 Mat类型较CvMat和IplImage有更强的矩阵运算能力,支持常见的矩阵运算(参照Mat ...

  9. php统计网站访问次数的一个简单方法

    这里主要用到了session保存当前访问者,并将访问次数写入本地文件. <? @session_start(); $counter = intval(file_get_contents(&quo ...

  10. 使用 ServiceStack.Text 序列化 json的实现代码【转】

    转自:http://www.jb51.net/article/38338.htm 今天发篇文章总结下自己使用 ServiceStack.Text 来序列化 json.它的速度比 Newtonsoft. ...