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 ...
随机推荐
- ajax java base64 图片储存
js代码 //利用formdata上传 var dataUrl = $('#canvas').getDataUrl(); var img = $('<img>').attr('src', ...
- Office word 2013中直接调用MathType的方法
Office word 2013中直接调用MathType的方法 | 浏览:4403 | 更新:2014-02-20 14:45 | 标签: word 使用Office word 2013的用户肯定早 ...
- 模块:js实现一个倒计时功能
1.给显示内容加样式 <style> #p1{font-size: large; color: red;} </style> 2.客户端页面 <div id=" ...
- etl学习系列1——etl工具安装
ETL(Extract-Transform-Load的缩写,即数据抽取.转换.装载的过程),对于企业或行业应用来说,我们经常会遇到各种数据的处理,转换,迁移,所以了解并掌握一种etl工具的使用,必不可 ...
- VMware Player安装Debian系统
尝试用虚拟机来安装Debian系统,感觉这样一来安装与卸载方便,二来也可以在Linux系统安装出现问题的情况下方便在host主机上查找解决方法,同时也避免了要重新设置分区来安装Linux系统(双系统的 ...
- 给linux安全模块LSM添加可链式调用模块(一)
前些日子接了个外包的活,了解了一下Linux安全模块,发现了安全模块中的一些问题. 关于linux安全模块LSM在此就不多说了,大家google下就明白了. 这里主要介绍的是如何修改这个模块,使它可链 ...
- Chapter 4: Troubleshoot and debug web applications
Prevent and troubleshoot runtime issues Troubleshooting performance, security and errors using perfo ...
- 在指定的div中搜索内容,并滚动显示到当前搜索到的内容处
我想要的是页面中有个带滚动条的div对象,里面有很多内容,想要用js搜索到div中的某个字符串内容,然后将div的滚动条滚动到搜索到的内容处显示,自动定位.先是查找页面中的内容,然后将找到的内容创建t ...
- Nginx-解读内置非默认模块 ngx_http_stub_status_module
1.Background ngx_http_stub_status_module 是一个 Nginx 的内置 HTTP 模块,该模块可以提供 Nginx 的状态信息.默认情况下这个模块是不被编译进来的 ...
- Android 手机蓝牙接收文件夹
网上很多都没用用,只能自己研究了 /mnt/emmc/downloads/bluetooth