WEB开发网
开发学院数据库MSSQL Server 从 SQL Server 2005 中处理 XML 阅读

从 SQL Server 2005 中处理 XML

 2007-05-13 09:26:22 来源:WEB开发网   
核心提示: -- T-SQL stored procedure definitionCREATE PROCEDURE insert_xml(@x XML)ASINSERT xmltab(xmlcol) VALUE(@x)// client-side codeusing System;using Sys
-- T-SQL stored procedure definition
CREATE PROCEDURE insert_xml(@x XML)
AS
INSERT xmltab(xmlcol) VALUE(@x)
// client-side code
using System;
using System.Data;
using System.Data.SqlClient;
void InsertXMLFromClient {
// get a connection string from a config file
string s = GetConnectStringFromConfigFile("xmldb");
using (SqlConnection conn = new SqlConnection(s))
using (SqlCommand cmd1 = new SqlCommand(
    "INSERT xmltab(xmlcol) VALUES(@x)", conn))
using (SqlCommand cmd2 = new SqlCommand(
    " insert_xml", conn))
{
 string str = "<somedoc/>";
 conn.Open();
 
 // server-side conversion
 cmd1.Parameters.Add("@x", SqlDbType.NVarChar);
 cmd1.Parameters[0].Value = str;
 cmd1.ExecuteNonQuery();
 // client-side conversion works too
 cmd2.CommandType = CommandType.StoredProcedure;
 cmd2.Parameters.Add("@x", SqlDbType.Xml);
 cmd2.Parameters[0].Value = s;
 cmd2.ExecuteNonQuery();
}
}
三、文档、片段和 FOR XML 支持
SQL Server 2005 中的 XML 数据类型既支持 XML 文档,也支持 XML 文档片段。片段与文档的区别在于,片段能包含多个顶级元素和空文本节点。对于类型化的 XML 列/变量/参数,您可以使用 DOCUMENT(不允许片段)或 CONTENT(允许片段)规范指定是否允许片段。CONTENT 是默认值,非类型化的 XML 允许片段。以下 T-SQL 代码举例说明了对片段的支持:
CREATE TABLE xmltab (
 id INT IDENTITY PRIMARY KEY,
 xmlcol XML)
GO
-- insert a document
INSERT xmltab VALUES('<doc/>')
-- fragment, multiple top-level elements
INSERT xmltab VALUES('<doc/><doc/>')
-- fragment, bare text node
INSERT xmltab VALUES('Hello World')
-- even this fragment works
INSERT xmltab VALUES('<doc/>sometext')

SELECT ... FOR XML 也会生成 XML 片段。语句 SELECT job_id, min_lvl, max_lvl FROM jobs FOR XML AUTO 生成以下输出。请注意,有多个根元素。

上一页  1 2 3 4 5 6 7 8 9 10  下一页

Tags:SQL Server 处理

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接