sql xml 转datatable 存储过程 笔记
2011-10-17 19:36
393 查看
CREATE PROCEDURE P_GetTable_By_XML @XML XML
AS
SELECT S.value('local-name(.)', 'NVARCHAR(20)') AS ColumnName
INTO #tColumns
FROM @XML.nodes('/Root/Schema/*') T ( S )
DECLARE @strXML NVARCHAR(MAX) = 'DECLARE @XML XML = N'''
+ CAST(@XML AS NVARCHAR(MAX)) + ''''
DECLARE @strTableSql NVARCHAR(MAX) = ' DECLARE @tResultTable Table ('
DECLARE @strInsertSql NVARCHAR(MAX) = ' INSERT INTO @tResultTable ('
DECLARE @strSelSql NVARCHAR(MAX) = ' select '
DECLARE @strFromSql NVARCHAR(MAX) = ' FROM @XML.nodes(''/Root/Row'') T(S)'
DECLARE @strSelectSql NVARCHAR(MAX) = 'SELECT * FROM @tResultTable'
SELECT @strTableSql = @strTableSql + '[' + a.ColumnName
+ '] NVARCHAR(max),' ,
@strInsertSql = @strInsertSql + '[' + a.ColumnName + '],' ,
@strSelSql = @strSelSql + 'S.value(' + '''' + '(' + a.ColumnName
+ ')[1]'' , ''NVARCHAR(max)''),'
FROM #tColumns a
SET @strTableSql = LEFT(@strTableSql, LEN(@strTableSql) - 1) + ')'
SET @strInsertSql = LEFT(@strInsertSql, LEN(@strInsertSql) - 1) + ')'
SET @strSelSql = LEFT(@strSelSql, LEN(@strSelSql) - 1)
EXEC(@strXML + @strTableSql + @strInsertSql + @strSelSql + @strFromSql + @strSelectSql)
DROP TABLE #tColumns
GO
AS
SELECT S.value('local-name(.)', 'NVARCHAR(20)') AS ColumnName
INTO #tColumns
FROM @XML.nodes('/Root/Schema/*') T ( S )
DECLARE @strXML NVARCHAR(MAX) = 'DECLARE @XML XML = N'''
+ CAST(@XML AS NVARCHAR(MAX)) + ''''
DECLARE @strTableSql NVARCHAR(MAX) = ' DECLARE @tResultTable Table ('
DECLARE @strInsertSql NVARCHAR(MAX) = ' INSERT INTO @tResultTable ('
DECLARE @strSelSql NVARCHAR(MAX) = ' select '
DECLARE @strFromSql NVARCHAR(MAX) = ' FROM @XML.nodes(''/Root/Row'') T(S)'
DECLARE @strSelectSql NVARCHAR(MAX) = 'SELECT * FROM @tResultTable'
SELECT @strTableSql = @strTableSql + '[' + a.ColumnName
+ '] NVARCHAR(max),' ,
@strInsertSql = @strInsertSql + '[' + a.ColumnName + '],' ,
@strSelSql = @strSelSql + 'S.value(' + '''' + '(' + a.ColumnName
+ ')[1]'' , ''NVARCHAR(max)''),'
FROM #tColumns a
SET @strTableSql = LEFT(@strTableSql, LEN(@strTableSql) - 1) + ')'
SET @strInsertSql = LEFT(@strInsertSql, LEN(@strInsertSql) - 1) + ')'
SET @strSelSql = LEFT(@strSelSql, LEN(@strSelSql) - 1)
EXEC(@strXML + @strTableSql + @strInsertSql + @strSelSql + @strFromSql + @strSelectSql)
DROP TABLE #tColumns
GO
相关文章推荐
- C# 如何把dataTable以参数的形式传入 sql 存储过程
- 将dataTable一次性插入数据库的几种方法(SqlBulkCopy或存储过程)
- 全用存储过程和全用SQL思考笔记
- 工作日志之 SQL 存储过程返回XML数据集
- SQL学习笔记6 视图 存储过程 事务处理
- ms sql server读取xml文件存储过程-sp_xml_preparedocument
- c#大圣之路笔记——c# 我们需要在XML与实体类,DataTable,List之间进行转换,下面是XmlUtil类,该类来自网络并稍加修改。
- SQL学习笔记[5] - 通过分隔符解析方式实现向SQL存储过程传递数组参数
- Oracle 笔记(八)、PL/SQL 高级应用(游标、存储过程、函数、程序包)
- 数据库操作_连接SQL Server数据库示例;连接ACCESS数据库;连接到 Oracle 数据库示例;SqlCommand 执行SQL命令示例;SqlDataReader 读取数据示例;使用DataAdapter填充数据到DataSet;使用DataTable存储数据库表;将数据库数据填充到 XML 文件;10 使用带输入参数的存储过程;11 使用带输入、输出参数的存储过程示;12 获得数据库中表的数目和名称;13 保存图片到SQL Server数据库示例;14 获得插入记录标识号;Exce
- JavaPersistenceWithMyBatis3笔记-第3章SQL Mappers Using XMLs-001
- SQL 必知必会·笔记<17>使用存储过程
- Oracle 笔记(八)、PL/SQL 高级应用(游标、存储过程、函数、程序包)
- sql笔记(2)存储过程
- 全用存储过程和全用SQL思考笔记
- [原创]java WEB学习笔记81:Hibernate学习之路--- 对象关系映射文件(.hbm.xml):hibernate-mapping 节点,class节点,id节点(主键生成策略),property节点,在hibernate 中 java类型 与sql类型之间的对应关系,Java 时间和日期类型的映射,Java 大对象类型 的 映射 (了解),映射组成关系
- SQL操作xml 笔记
- ASP.NET 3.5核心编程学习笔记(23):Linq-to-SQL 数据的更新、事务、存储过程、函数
- MS SQLServer 操作XML语句的存储过程
- [原]java专业程序代写(qq:928900200),学习笔记之基础入门<SQL_Server_视图_函数_存储过程_触发器等>(二十三)