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 ...
随机推荐
- C# 获取 oracle 存储过程的 返回值
存储过程 CREATE OR REPLACE PROCEDURE ADMIN.INSERT_OBJ ( OBJEFIRT_parms IN NVARCHAR2, OBJEDATT_parms IN N ...
- Html菜鸡大杂烩
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- Advanced SystemCare 系统优化软件
这是一款国外非常流行的系统优化软件,功能很全面,而且中文版用起来也没有语言障碍. Pro版: C0184-8F31F-4B337-296F7 8DE4A-352D9-B4531-D60F7 5B91B ...
- JS在路径中传中文参数
需要用 encodeURI('中文');处理一下.
- 关于是用dotnet获取本机IP地址+计算机名的方法
印象中在maxscript帮助文档里找到过方法,但是当时没记下来.只能通过dotnet实现了. 如果电脑有无线网卡和本地连接,可能会出现乱码,也问了写dotnet的朋友,提供了一些思路,不过最终还是使 ...
- Lua 调用 Opencv 的方法
Lua 调用 Opencv 的方法 最近想用 Lua 调用 Opencv 进行相关像素级操作,如:bitwise_and 或者 bitwise_or,从而完成图像 IoU 的计算. 那么,怎么用 Lu ...
- centos6.3环境下升级python及MySQLdb的安装
近来突然想鼓捣下linux下的python,看下Python数据库方面的东西,想着在centos下测试下.然而安装的过程有很多坑.下面对整个流程进行下记录 1.python基本库的安装 在安装pyth ...
- 获取字符串中img标签的url集合(转载)
/// <summary> /// 获取字符串中img的url集合 /// </summary> /// <param name="content"& ...
- Yii2 利用controllerMap自定义控制器类
版权声明:本文为博主原创文章,未经博主允许不得转载. Yii2框架为我们自定义好的 controllers,Models,views,标准的MVC结构框架,但是有些时候我们写接口希望结构更加清晰而不 ...
- List的Capacity
Capacity 在.NET中List的容量应该只是受到硬件限制. 属性Capacity的真正含义,是创建List时给它预分配的容量. 一旦项的数量超过了当前的Capacity,Capacity会以 ...