生成xml并更新表字段
来源:互联网 发布:淘宝卖单机游戏 编辑:程序博客网 时间:2024/06/10 10:56
--生成tm_xUnique对应的xml
DECLARE @x1 XML
SET @x1 =
CAST((SELECT a.name AS "@TableName",
'uq_' + a.name + '_id_num' AS "UniqueConstraint/uq_name",
'(' + STUFF((
SELECT ',' + name FROM sys.columns
WHERE a.object_id = object_id
AND ( name LIKE '%s_cID' ESCAPE 's' OR name LIKE '%s_cNum' ESCAPE 's' )
FOR XML PATH('')),1,1,'')+ ')' AS "UniqueConstraint/uq_fields"
FROM sys.objects a
WHERE type = 'u'
AND a.name in (select tm_ctable from xt_tableml)
FOR XML PATH('Table')) AS XML)
UPDATE xt_tableml SET tm_xUnique = tb_xml
FROM xt_tableml
CROSS APPLY
(
SELECT p.x.query('.') AS tb_xml
FROM @x1.nodes('/Table') AS p(x)
WHERE p.x.value('(./@TableName)[1]','VARCHAR(100)') = tm_cTable
)p
--SELECT tm_cTable,tb_xml
--FROM xt_tableml
--CROSS APPLY
--(
-- SELECT p.x.query('.') AS tb_xml
-- FROM @x1.nodes('/Table') AS p(x)
-- WHERE p.x.value('(./@TableName)[1]','VARCHAR(100)') = tm_cTable
--)p
--生成tm_xLink对应的xml
IF OBJECT_ID('tempdb..#tmp') IS NOT NULL
DROP TABLE #tmp
;WITH tb(tbname , fieldname) AS
(
SELECT b.name,a.name FROM sys.columns a
INNER JOIN sys.objects b ON a.object_id = b.object_id
WHERE type = 'u'
AND (a.name LIKE '%s_cdept%' ESCAPE 's'
OR a.name LIKE '%t_cperson%' ESCAPE 't'
OR a.name LIKE '%s_cware%' ESCAPE 's'
OR a.name LIKE '%s_center%' ESCAPE 's')
AND b.name in (select tm_ctable from xt_tableml)
),
tb1(tbname,fieldid,fieldname) AS
(
SELECT a.tbname,
b.fieldname,
a.fieldname
FROM tb a
LEFT JOIN tb b ON a.tbname = b.tbname
AND a.fieldname = REPLACE(b.fieldname,'id','')
AND PATINDEX('%ID%',b.fieldname)>0
WHERE PATINDEX('%ID%',a.fieldname) = 0
)
SELECT * INTO #tmp FROM tb1
DECLARE @x1 XML
SET @x1 =
CAST((SELECT tbname "@TableName",
CASE WHEN CHARINDEX('deptid',fieldid) > 0 THEN fieldid END "Dept/DeptID",
CASE WHEN CHARINDEX('dept',fieldname) > 0 THEN fieldname END "Dept/DeptName",
CASE WHEN CHARINDEX('personid',fieldid) > 0 THEN fieldid END "Person/PersonID",
CASE WHEN CHARINDEX('person',fieldname) > 0 THEN fieldname END "Person/PersonName",
CASE WHEN CHARINDEX('wareid',fieldid) > 0 THEN fieldid END "Ware/WareID",
CASE WHEN CHARINDEX('ware',fieldname) > 0 THEN fieldname END "Ware/WareName",
CASE WHEN CHARINDEX('enter',fieldname) > 0 THEN fieldname END "Enter/EnterName"
FROM #tmp
FOR XML PATH('Table')) AS XML)
--SELECT @x1
UPDATE xt_tableml SET tm_xLink = tb_xml
FROM xt_tableml s
CROSS APPLY
(
SELECT tm_cTable,
CAST(REPLACE(REPLACE(REPLACE(
(
SELECT '' + tb_xml
FROM xt_tableml
CROSS APPLY
(
SELECT CAST(p.x.query('.') AS VARCHAR(MAX)) AS tb_xml
FROM @x1.nodes('/Table') AS p(x)
WHERE p.x.value('(./@TableName)[1]','VARCHAR(100)') = tm_cTable
)p
WHERE a.tm_cTable = tm_cTable
FOR XML PATH(''))
,'</Table><Table TableName="' + tm_cTable + '">',''),'<','<'),'>','>') AS XML) AS tb_xml
FROM xt_tableml a
WHERE s.tm_cTable = tm_cTable
)p
--SELECT tm_cTable,
--CAST(REPLACE(REPLACE(REPLACE(
-- (
-- SELECT '' + tb_xml
--FROM xt_tableml
--CROSS APPLY
--(
--SELECT CAST(p.x.query('.') AS VARCHAR(MAX)) AS tb_xml
--FROM @x1.nodes('/Table') AS p(x)
--WHERE p.x.value('(./@TableName)[1]','VARCHAR(100)') = tm_cTable
--)p
--WHERE a.tm_cTable = tm_cTable
-- FOR XML PATH(''))
-- ,'</Table><Table TableName="' + tm_cTable + '">',''),'<','<'),'>','>') AS XML)
--FROM xt_tableml a
- 生成xml并更新表字段
- 循环更新表字段
- 批量更新大表字段
- 用一个表字段值更新另一个表字段值
- 代码自动生成(二)数据库表字段生成mybaties 映射配置文件**mapper.xml
- oracle联合查询并更新一个表字段的sql语句
- oracle 用一个表字段更新另一个表字段三种方法
- Oracle 用一个表字段更新另一个表字段三种方法
- 用一个表字段更新另一个表字段三种方法
- SQL动态更新表字段(分享)
- mysql存储过程更新表字段
- 从其他表字段值更新
- 创建存储过程更新表字段
- mysql5.7 多表字段更新
- SQL:根据第二张表字段值更新第一张表字段值
- Oracle 用一个表字段值更新另一个表字段值
- mysql update from 关联更新 从一个表字段 到另外一个表字段
- .net中更新已存在表字段的解决方法
- Silverlight用WebClient and HttpWebRequest两种方式来调用WebService
- WEB打印控件
- 名人效应
- 不能掌握一定的计算机专业英语就不是好的程序員!
- 读书笔记: 冒号课堂, refactoring, design patterns
- 生成xml并更新表字段
- des和3Des加密算法实现
- 新年时间表
- AJAX
- 處理批處理文件中的參數
- 今天没什么事发生
- Kerberos
- chrome涉及开源项目
- linux软、硬链接的区别