以后在SQL Server中编程Stored Procedure的参数传递是不只需要一个XML文件就可以,不用定义那么多花里胡哨的DateTime,Varchar等等 0CSDN]

发布时间:2016-12-8 8:33:59 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"以后在SQL Server中编程Stored Procedure的参数传递是不只需要一个XML文件就可以,不用定义那么多花里胡哨的DateTime,Varchar等等 0CSDN]",主要涉及到以后在SQL Server中编程Stored Procedure的参数传递是不只需要一个XML文件就可以,不用定义那么多花里胡哨的DateTime,Varchar等等 0CSDN]方面的内容,对于以后在SQL Server中编程Stored Procedure的参数传递是不只需要一个XML文件就可以,不用定义那么多花里胡哨的DateTime,Varchar等等 0CSDN]感兴趣的同学可以参考一下。

这几天在看SQLServer2005的XML功能,非常强大,而且用它自身带的XQuery可以把XML文件里面的XML分解成SQL语句,那么我想以后我编程序就可以只给Stored Procedure传递一个包罗万象的XML文件就好了,不用再定义很多的参数,大家说说这是不是未来的一个趋势呀?

每个stored procedure里面再分拆参数?

如果我一个XML文件里有三四十个参数,stored procedure也能把这些做为参数带进去?动态??

当然可以了,使用XML和XQuery简直可以使数据库的参数传递灵活的无法想象 我举个例子,这是我经常用到的一种XML Stored Procedure结构,如下: create proc xmlStoredProcedure ( @x xml ) as begin declare @date datetime     set @date = @x.query('//root/date/text()').value('text()[1]','datetime') print @date declare @name varchar(1000) set @name = @x.query('//root/name/text()').value('text()[1]','varchar(1000)') print @name select * from table1 where date = @date or xName = @name end 无非就是根据xml文件里的日期和人名把内容select出来,那么我有如下一段xml文件,把它作为参数传给这个Stored Procedure <root> <date>2005/1/1</date> <name>xu chun</name> </root> 好了,就完了,就这么简单,你可以自由的增加和删减xml文件里面的参数,多么简单,多么直观,我正在建议我们公司以后都这么做

用XQuery和XML的另外一个巨大的好处是你可以传递数目不确定的参数,比如,用户选择有多少学生,那么在运行时用户的选择是个动态量,把这个信息用XML传递给SP是最天然的方法,比如 <root>    <name>xxx</name>    <name>xxx</name>    <name>xxx</name> . . .    你不知道会有多少条,这是运行时动态的 </root> 但你可以通过XQuery把他们很轻松的编成一条SQL语句 变成     name ='xxx' or name = 'xxx'......  或者变成 name in ('xxx','yyy','gggg'........ 'erer','pppp') 太爽了 欢迎弟兄们讨论

cacaca6的说法不赞同,也许可以说是只知其一不知其二。比如第一个例子,可以写成 create proc xmlStoredProcedure ( @date as datetime , @name as varchar(1000) ) as begin select * from table1 where  (date = @date and @date is not null)  or (xName = @name and @name is not null) end cacaca6的做法并不是不行,只是没有明显的好处,反而容易引起混乱:stored procedure本身就定义了调用时候的格式,换成xml等于什么也没说,你又去哪里定义 <root> <date>2005/1/1</date> <name>xu chun</name> </root> 这样的格式呢?开发的人和维护的人会不会有误解呢?会不会需要写更多的文档呢? 知道一种技术是好的,但不一定需要用它。

用来存储附加信息还可以,比如 只用来显示,如果牵涉到条件查找和统计,太累了

这个在sql2000里就可以这麽用了,只不过要用OPENXML(),sp_xml_preparedocument 等来解析XML。

個人感覺XML還是不錯的東東~~:)

TO:cacaca6(大头tom) 想法不错,以前在sql2000的时候就想这样做,但那个时候没xml类型,查询也不是很方便,现在2005好多了,我的项目中也正在这样使用

上一篇:请教:reporing service的报表中,如何修改它的xml,让参数1的输入框变长,参数2换行啊,谢谢! 20zrb007]
下一篇:SQL2005 Rank()的问题 20CSDN]

相关文章

相关评论