SQL存储过程-新增和修改,参数Xml数据类型
- 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
取消预约会议-事务处理
/****** Object: Procedure [dbo].[UP_ConfScheduled_CancelScheduledConf] Script Date: 2014-3-17 9:23:26 ******/
USE [ytSummitTeleConf_DB];
GO
SET ANSI_NULLS ON;
GO
SET QUOTED_IDENTIFIER ON;
GO /*============================================================= =============================================================*/
CREATE PROCEDURE [dbo].[UP_ConfScheduled_CancelScheduledConf]
@SeqNo INT,
@ConfRoom UNIQUEIDENTIFIER
AS
SET NOCOUNT ON IF NOT EXISTS
(
SELECT 1
FROM dbo.WTC_TB_BOOKCONF WITH(NOLOCK)
WHERE CONFROOM = @ConfRoom
AND [STATUS] = 0
)
BEGIN
RETURN -1 --预约会议不存在.
END IF EXISTS
( SELECT 1
FROM dbo.WTC_TB_USERCONF WITH(NOLOCK)
WHERE CONFROOM = @ConfRoom
)
BEGIN
RETURN -2 --会议已经召开.
END BEGIN TRY
BEGIN TRAN --取消预约
UPDATE dbo.WTC_TB_BOOKCONF
SET [STATUS] = 3
WHERE CONFROOM = @ConfRoom
AND [STATUS] = 0 --删除预约队列
DELETE dbo.WTC_TB_BOOKCONFQUEUE
WHERE CONFROOM = @ConfRoom --保留预约会议信息,以便统计短信等费用
INSERT INTO dbo.WTC_TB_USERCONF
(
CONFROOM,
SeqNo,
CONFTITLE,
CONFTIME,
ISRECORD,
MasterMebID,
Flag
)
SELECT
A.CONFROOM,
A.SeqNo,
A.CONFTITLE,
A.BOOKTIME,
A.IsRecord,
A.MasterMebID,
20 --取消的预约会议
FROM dbo.WTC_TB_BOOKCONF A WITH(NOLOCK)
WHERE A.CONFROOM = @ConfRoom
AND NOT EXISTS
(
SELECT 1
FROM dbo.WTC_TB_USERCONF B WITH(NOLOCK)
WHERE B.CONFROOM = A.CONFROOM
) INSERT INTO dbo.WTC_TB_USERCONFMEB
(
MebID,
CONFROOM,
PHONENO,
PHONENOTE,
MEMBERTYPE,
ADDCONFTIME,
ADDORDER
)
SELECT
A.MebID,
A.CONFROOM,
A.PHONENO,
A.PHONENOTE,
A.MEMBERTYPE,
GETDATE(),
ROW_NUMBER() OVER(ORDER BY GETDATE())
FROM dbo.WTC_TB_BOOKMEMBER A WITH(NOLOCK)
WHERE CONFROOM = @ConfRoom
AND NOT EXISTS
(
SELECT 1
FROM dbo.WTC_TB_USERCONFMEB B WITH(NOLOCK)
WHERE B.CONFROOM = A.CONFROOM
AND B.MebID = A.MebID
) --保留预约会议信息,以便统计短信等费用
INSERT INTO dbo.WTC_TB_CONFROOM
(
CONFROOM,
SeqNo,
CONFID,
CREATETIME,
CREATEONLINEID,
CONFTITLE,
UPDATETIME,
IsPlayMusic,
CONFTYPE,
CONFDATAKEY,
RECORDTHREADID,
IsRecord
)
SELECT
A.CONFROOM,
A.SeqNo,
0,
A.BOOKTIME,
A.MasterMebID,
A.CONFTITLE,
GETDATE(),
0,
0,
'',
0,
A.IsRecord
FROM dbo.WTC_TB_BOOKCONF A WITH(NOLOCK)
WHERE A.CONFROOM = @ConfRoom
AND NOT EXISTS
(
SELECT 1
FROM dbo.WTC_TB_CONFROOM B WITH(NOLOCK)
WHERE B.CONFROOM = A.CONFROOM
) INSERT INTO dbo.WTC_TB_CONFMEMBERS
(
MebID,
CONFROOM,
PHONENO,
DATA,
UPDATETIME,
ADDORDER
)
SELECT
A.MebID,
A.CONFROOM,
A.PHONENO,
A.PHONENOTE,
GETDATE(),
ROW_NUMBER() OVER(ORDER BY GETDATE())
FROM dbo.WTC_TB_BOOKMEMBER A WITH(NOLOCK)
WHERE CONFROOM = @ConfRoom
AND NOT EXISTS
(
SELECT 1
FROM dbo.WTC_TB_CONFMEMBERS B WITH(NOLOCK)
WHERE B.CONFROOM = A.CONFROOM
AND B.MebID = A.MebID
) COMMIT TRAN
END TRY
BEGIN CATCH
ROLLBACK TRAN
RETURN -100 --数据库异常
END CATCH GO
获取预约会议
/****** Object: Procedure [dbo].[UP_ConfScheduled_GetScheduledConfs] Script Date: 2014-3-17 9:29:19 ******/
USE [ytSummitTeleConf_DB];
GO
SET ANSI_NULLS ON;
GO
SET QUOTED_IDENTIFIER ON;
GO
/*============================================================= =============================================================*/
CREATE PROCEDURE [dbo].[UP_ConfScheduled_GetScheduledConfs]
@SeqNo INT
AS
SET NOCOUNT ON SELECT
A.CONFROOM
,A.CONFTITLE
,A.BOOKTIME
,A.WRITETIME
,B.MemberCount
,A.IsRecord
FROM dbo.WTC_TB_BOOKCONF A WITH(NOLOCK)
OUTER APPLY
(
SELECT MemberCount = COUNT(1)
FROM dbo.WTC_TB_BOOKMEMBER B WITH(NOLOCK)
WHERE B.CONFROOM = A.CONFROOM
) B
WHERE A.SeqNo = @SeqNo
AND A.[STATUS] = 0
ORDER BY A.BOOKTIME desc
GO
修改参会模式
/****** Object: Procedure [dbo].[UP_ConfScheduled_SetParticipantTalkMode] Script Date: 2014-3-17 9:32:26 ******/
USE [ytSummitTeleConf_DB];
GO
SET ANSI_NULLS ON;
GO
SET QUOTED_IDENTIFIER ON;
GO /*============================================================= =============================================================*/
CREATE PROCEDURE dbo.UP_ConfScheduled_SetParticipantTalkMode
@ConfRoom UNIQUEIDENTIFIER,
@MemberList XML
AS
SET NOCOUNT ON
/*
<Root>
<Member>
<MebID>5685C2C9-70B7-4721-AB77-385FEDD7B0CF</MebID>
<MemberType>1</MemberType>
</Member>
<Member>
<MebID>E495548E-55FA-4588-AB9A-99CC7ED3D758</MebID>
<MemberType>4</MemberType>
</Member>
</Root>
*/
UPDATE A
SET A.MemberType = B.MemberType
FROM dbo.WTC_TB_BOOKMEMBER A
INNER JOIN
(
SELECT
MebID = T.c.value('(./MebID/text())[1]', 'UNIQUEIDENTIFIER'),
MemberType = T.c.value('(./MemberType/text())[1]', 'TINYINT')
FROM @MemberList.nodes('Root/Member') AS T(c)
) B
ON A.MebID = B.MebID
WHERE A.CONFROOM = @ConfRoom GO
SQL存储过程-新增和修改,参数Xml数据类型的更多相关文章
- 转sql server新增、修改字段语句(整理)
添加字段的SQL语句的写法: 通用式: alter table [表名] add [字段名] 字段属性 default 缺省值 default 是可选参数增加字段: alter table [表名] ...
- SQL——存储过程实例 调用带参数的过程(成绩输出)
create or replace procedure test_score(input in number,output out char) is begin then begin output : ...
- sql批量新增,修改
<insert id="insertExtDocList" parameterType="map"> INSERT INTO extprjdoc ( ...
- 二、sql新增后返回主键|sql 使用 FOR XML PATH实现字符串拼接|sql如果存在就修改不存在就新增
一.sql新增后返回主键 1,返回自增的主键: INSERT INTO 表名 (字段名1,字段名2,字段名3,…) VALUES (值1,值2,值3,…) SELECT @@IDENTITY 2,返回 ...
- SQL Server 2008 对XML 数据类型操作
原文 http://www.cnblogs.com/qinjian123/p/3240702.html 一.前言 从 SQL Server 2005 开始,就增加了 xml 字段类型,也就是说可以直接 ...
- SQL 存储过程 解析XML
第一种说明: 我看过这样一篇文章,如下 在SQL Server2005中,微软延续了 2000中一个特性(即支持XML类型的数据),并加强了对XML 数据列.XML变量以及XML索引的支持 ...
- SQL Server存储过程Return、output参数及使用技巧
SQL Server目前正日益成为WindowNT操作系统上面最为重要的一种数据库管理系统,随着 SQL Server2000的推出,微软的这种数据库服务系统真正地实现了在WindowsNT/2000 ...
- sql 解析字符串添加到临时表中 sql存储过程in 参数输入
sql 解析字符串添加到临时表中 sql存储过程in 参数输入 解决方法 把字符串解析 添加到 临时表中 SELECT * into #临时表 FROM dbo.Func_SplitOneCol ...
- java 执行sql错误 传入的表格格式数据流(TDS)远程过程调用(RPC)协议流不正确。参数 1 (""): 数据类型 0x38 未知
连接数据库时设置:Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE ,ResultSet.CONCUR_R ...
随机推荐
- javascript下ie7,ie8的Date Bug的解决
ie9+, chrome firefox opera下 string到Date 使用 new Date("2013-01-01"); 都是ok的. 但在ie7, ie8下 返回N ...
- Flex box弹性布局 及 响应式前端设计的优化
Flex box弹性布局 Flex box是CSS3新添加的一种模型属性,它的出现有力的打破了我们常常使用的浮动布局.实现垂直等高.水平均分.按比例划分,可以实现许多我们之前做不到的自适应布局.如果你 ...
- js的事件委托
什么是事件委托:通俗的讲,事件就是onclick,onmouseover,onmouseout,等就是事件,委托呢,就是让别人来做,这个事件本来是加在某些元素上的,然而你却加到别人身上来做,完成这个事 ...
- UICollectionViewCell选中高亮状态和UIButton的高亮状态和选中状态
UICollectionViewCell选中高亮状态 //设置点击高亮和非高亮效果! - (BOOL)collectionView:(UICollectionView *)collectionView ...
- 1.4 云计算的SPI服务模型
云计算是通过共享资源池的方式来提高资源利用率的.在云计算中,根据其资源池中资源的类别,可以把云计算的服务模型分为三种,即所谓的SPI 模型 应用程序 Software as a Service ( ...
- Java Socket长连接示例代码
SocketListenerPusher.java代码如下: import java.io.IOException; import java.net.InetSocketAddress; import ...
- 数迹学——Asp.Net MVC4入门指南(5):从控制器访问数据模型
MovieController中的方法Index()代码,初认识,应该有很多理解错误的地方,暂时这么记忆吧,待随后修改 Index()代码: @model IEnumerable<MVCMovi ...
- Unity3D入门
Unity3D是一款应用广泛的3D游戏引擎,本文主要介绍unity3D的简单应用,安装过程略过. 在游戏的整个开发过程中,游戏界面设计占据非常重要的地位.因为游戏启动后,第一个映入眼帘的就是整个游戏U ...
- Excel 去掉每次打开弹出自定义项安装的弹窗
弹窗: 解决方案: 一.打开“文件”——“选项”如图. 二.选择“加载项”,下面的“管理”,选择“COM加载项”,然后点击“转到”,弹出框: 三:在“可用加载项”下面你会发现有一项是“LoadTest ...
- DotNet 资源大全中文版【转】
转自:https://github.com/jobbole/awesome-dotnet-cn 我想很多程序员应该记得 GitHub 上有一个 Awesome - XXX 系列的资源整理.awesom ...