急急急急 这个问题有点炸?

uutt001 2016-08-17 11:50:18
CREATE PROC p1
AS
DECLARE @x XML

SET @x=(select * from Test1 FOR XML RAW('entry'),ELEMENTS,ROOT('so_order_body'))

SELECT @x.query('<ufinterface xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" roottag="so_order" billtype="30" replace="Y" sender="30" isexchange="Y" filename="销售订单头.xml" proc="add" operation="req">

<so_order>

<so_order_head>

<pk_corp>深圳华强电子商务股份有限公司</pk_corp>
<creceipttype>30</creceipttype>
<cbiztype>电商淘宝零售</cbiztype>
<binitflag>N</binitflag>
<dbilldate>2016-06-16</dbilldate>
<ccustomerid>SWJ</ccustomerid>
<cdeptid>经营管理部</cdeptid>
<cemployeeid>彭斌</cemployeeid>
<coperatorid>顾问3</coperatorid>
<csalecorpid>深圳华强电子商务股份有限公司</csalecorpid>
<ccalbodyid>深圳华强电子世界网络技术有限公司</ccalbodyid>
<creceiptcustomerid>SWJ</creceiptcustomerid>
<creceiptcorpid>SWJ</creceiptcorpid>
<ndiscountrate>100</ndiscountrate>
<bfreecustflag>N</bfreecustflag>
<ibalanceflag>1</ibalanceflag>
<dmakedate>2016-06-16</dmakedate>
<fstatus>1</fstatus>
<vnote>华强官方旗舰店</vnote>
<vdef5>20160616MDBJTZ</vdef5>
<bretinvflag>N</bretinvflag>
<boutendflag>N</boutendflag>
<binvoicendflag>N</binvoicendflag>
<breceiptendflag>N</breceiptendflag>
<bpayendflag>N</bpayendflag>
</so_order_head>
{ /so_order_body } </so_order></ufinterface>')

GO
DECLARE @Sqlcmd NVARCHAR(max)
SET @Sqlcmd='EXEC master.sys.xp_cmdshell ''bcp "EXEC Demo.dbo.p1" queryout E:\hqdst\'+ CONVERT(VARCHAR(10),GETDATE(),112)+REPLACE(CONVERT(VARCHAR(8),GETDATE(),8),':','')+'.xml -c -q -T'''
EXEC(@Sqlcmd)

DECLARE @x XML

SET @x=(select * from Test1 FOR XML RAW('entry'),ELEMENTS,ROOT('so_order_body'))

SELECT @x.query('<ufinterface xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" roottag="so_order" billtype="30" replace="Y" sender="30" isexchange="Y" filename="销售订单头.xml" proc="add" operation="req">

<so_order>

<so_order_head>

<pk_corp>深圳华强电子商务股份有限公司</pk_corp>
<creceipttype>30</creceipttype>
<cbiztype>电商淘宝零售</cbiztype>
<binitflag>N</binitflag>
<dbilldate>2016-06-16</dbilldate>
<ccustomerid>SWJ</ccustomerid>
<cdeptid>经营管理部</cdeptid>
<cemployeeid>彭斌</cemployeeid>
<coperatorid>顾问3</coperatorid>
<csalecorpid>深圳华强电子商务股份有限公司</csalecorpid>
<ccalbodyid>深圳华强电子世界网络技术有限公司</ccalbodyid>
<creceiptcustomerid>SWJ</creceiptcustomerid>
<creceiptcorpid>SWJ</creceiptcorpid>
<ndiscountrate>100</ndiscountrate>
<bfreecustflag>N</bfreecustflag>
<ibalanceflag>1</ibalanceflag>
<dmakedate>2016-06-16</dmakedate>
<fstatus>1</fstatus>
<vnote>华强官方旗舰店</vnote>
<vdef5>20160616MDBJTZ</vdef5>
<bretinvflag>N</bretinvflag>
<boutendflag>N</boutendflag>
<binvoicendflag>N</binvoicendflag>
<breceiptendflag>N</breceiptendflag>
<bpayendflag>N</bpayendflag>
</so_order_head>
{ /so_order_body } </so_order></ufinterface>')

这两个语句生成出来的xml文件,格式一毛一样,为什么传输过去第一个会爆出验证文档格式的错误,而第二个就没有这个问题?
...全文
101 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
中国风 2016-08-17
  • 打赏
  • 举报
回复
程序调用加,no_output 不返回执行结果,再测试看看
DECLARE @Sqlcmd NVARCHAR(max)
SET @Sqlcmd='EXEC master.sys.xp_cmdshell ''bcp "EXEC Demo.dbo.p1" queryout  E:\hqdst\'+ CONVERT(VARCHAR(10),GETDATE(),112)+REPLACE(CONVERT(VARCHAR(8),GETDATE(),8),':','')+'.xml  -c -q -T'',no_output'
EXEC(@Sqlcmd)
中国风 2016-08-17
  • 打赏
  • 举报
回复
描述清楚自己是应用环境,如在程序调用只需要用第二段 自己去看一下,BCP命令
uutt001 2016-08-17
  • 打赏
  • 举报
回复
只是加了下面一句话而已
uutt001 2016-08-17
  • 打赏
  • 举报
回复
引用 楼主 uutt001 的回复:
CREATE PROC p1
AS
DECLARE @x XML

SET @x=(select * from Test1 FOR XML RAW('entry'),ELEMENTS,ROOT('so_order_body'))

SELECT @x.query('<ufinterface xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" roottag="so_order" billtype="30" replace="Y" sender="30" isexchange="Y" filename="销售订单头.xml" proc="add" operation="req">

				<so_order> 
				
				   <so_order_head>
				   
						<pk_corp>深圳华强电子商务股份有限公司</pk_corp>
						<creceipttype>30</creceipttype>
						<cbiztype>电商淘宝零售</cbiztype>
						<binitflag>N</binitflag>
						<dbilldate>2016-06-16</dbilldate>
						<ccustomerid>SWJ</ccustomerid>
						<cdeptid>经营管理部</cdeptid>
						<cemployeeid>彭斌</cemployeeid>
						<coperatorid>顾问3</coperatorid>
						<csalecorpid>深圳华强电子商务股份有限公司</csalecorpid>
						<ccalbodyid>深圳华强电子世界网络技术有限公司</ccalbodyid>
						<creceiptcustomerid>SWJ</creceiptcustomerid>
						<creceiptcorpid>SWJ</creceiptcorpid>
						<ndiscountrate>100</ndiscountrate>
						<bfreecustflag>N</bfreecustflag>
						<ibalanceflag>1</ibalanceflag>
						<dmakedate>2016-06-16</dmakedate>
						<fstatus>1</fstatus>
						<vnote>华强官方旗舰店</vnote>
						<vdef5>20160616MDBJTZ</vdef5>
						<bretinvflag>N</bretinvflag>
						<boutendflag>N</boutendflag>
						<binvoicendflag>N</binvoicendflag>
						<breceiptendflag>N</breceiptendflag>
						<bpayendflag>N</bpayendflag>
				</so_order_head>
		{ /so_order_body } </so_order></ufinterface>')

GO
DECLARE @Sqlcmd NVARCHAR(max)
SET @Sqlcmd='EXEC master.sys.xp_cmdshell ''bcp "EXEC Demo.dbo.p1" queryout  E:\hqdst\'+ CONVERT(VARCHAR(10),GETDATE(),112)+REPLACE(CONVERT(VARCHAR(8),GETDATE(),8),':','')+'.xml  -c -q -T'''
EXEC(@Sqlcmd)
DECLARE @x XML

SET @x=(select * from Test1 FOR XML RAW('entry'),ELEMENTS,ROOT('so_order_body'))

SELECT @x.query('<ufinterface xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" roottag="so_order" billtype="30" replace="Y" sender="30" isexchange="Y" filename="销售订单头.xml" proc="add" operation="req">

				<so_order> 
				
				   <so_order_head>
				   
						<pk_corp>深圳华强电子商务股份有限公司</pk_corp>
						<creceipttype>30</creceipttype>
						<cbiztype>电商淘宝零售</cbiztype>
						<binitflag>N</binitflag>
						<dbilldate>2016-06-16</dbilldate>
						<ccustomerid>SWJ</ccustomerid>
						<cdeptid>经营管理部</cdeptid>
						<cemployeeid>彭斌</cemployeeid>
						<coperatorid>顾问3</coperatorid>
						<csalecorpid>深圳华强电子商务股份有限公司</csalecorpid>
						<ccalbodyid>深圳华强电子世界网络技术有限公司</ccalbodyid>
						<creceiptcustomerid>SWJ</creceiptcustomerid>
						<creceiptcorpid>SWJ</creceiptcorpid>
						<ndiscountrate>100</ndiscountrate>
						<bfreecustflag>N</bfreecustflag>
						<ibalanceflag>1</ibalanceflag>
						<dmakedate>2016-06-16</dmakedate>
						<fstatus>1</fstatus>
						<vnote>华强官方旗舰店</vnote>
						<vdef5>20160616MDBJTZ</vdef5>
						<bretinvflag>N</bretinvflag>
						<boutendflag>N</boutendflag>
						<binvoicendflag>N</binvoicendflag>
						<breceiptendflag>N</breceiptendflag>
						<bpayendflag>N</bpayendflag>
				</so_order_head>
		{ /so_order_body } </so_order></ufinterface>')
这两个语句生成出来的xml文件,格式一毛一样,为什么传输过去第一个会爆出验证文档格式的错误,而第二个就没有这个问题?
加了个生成xml文件的指定文件夹以及名字就出现问题了 。这个是什么原因?
中国风 2016-08-17
  • 打赏
  • 举报
回复
DECLARE @Sqlcmd NVARCHAR(max)
SET @Sqlcmd='EXEC master.sys.xp_cmdshell ''bcp "EXEC Demo.dbo.p1" queryout  E:\hqdst\'+ CONVERT(VARCHAR(10),GETDATE(),112)+REPLACE(CONVERT(VARCHAR(8),GETDATE(),8),':','')+'.xml  -w -q -T'',no_output'
EXEC(@Sqlcmd)
-w 用以上命令试试,你生成的XML有特殊字符时可能会出现
uutt001 2016-08-17
  • 打赏
  • 举报
回复
引用 12 楼 roy_88 的回复:
没必要在这上面浪费时间 只要你的格式满足就行 要看格式化展示用专门的XML查看软件,在另一贴已教你了 看看浏览选项里有没有设置浏览这类文档,有就启用,比如IE就有这样的设置 你要测自己换浏览器再试,不行再问
版主 主要现在我要把sqlserver转出来的xml文件直接导入到用友NCERP中,这个xml文件格式抱错说格式不良,我用火狐,google打开都不行。但是我对比了下用友xml文件的格式,没问题。所以我想问xml文件进过bcp命令导出的xml文件是不是对它进行转码了?
中国风 2016-08-17
  • 打赏
  • 举报
回复
没必要在这上面浪费时间 只要你的格式满足就行 要看格式化展示用专门的XML查看软件,在另一贴已教你了 看看浏览选项里有没有设置浏览这类文档,有就启用,比如IE就有这样的设置 你要测自己换浏览器再试,不行再问
uutt001 2016-08-17
  • 打赏
  • 举报
回复
引用 10 楼 roy_88 的回复:
你用的什么 浏览器

GOOGLE
搜狗高速浏览器
360

-- 用以上3种浏览器试试,这3种都测试过显示没问题

我用火狐浏览器,
版主 测试过 可以打开?
中国风 2016-08-17
  • 打赏
  • 举报
回复
你用的什么 浏览器 GOOGLE 搜狗高速浏览器 360 -- 用以上3种浏览器试试,这3种都测试过显示没问题
中国风 2016-08-17
  • 打赏
  • 举报
回复
后缀后.xml就XML文件,打开浏览器,把文件拉过去?这是不是这样操作 关于让XML文件按格式化结构显示,在另一贴已讲得很清楚了,是不是XML文件看格式不会??那多去学习一下什么是XML
uutt001 2016-08-17
  • 打赏
  • 举报
回复
引用 7 楼 roy_88 的回复:
贴出来的语句方法,正常情况下在数据库是不会报错的,除非是SQL2000之前的版本

很有可能是你的使用方法或应用环境造成的,不描述清楚让大家来看这类没意义的错误信息帮不了你

抱歉啊 描述问题能力太差。
我想问上面的bcp命令是直接把数据转成xml文件,还是转换为xml格式的字符串。
生成的xml文件用浏览器打开,报出“ XML解析错误,格式不佳”
中国风 2016-08-17
  • 打赏
  • 举报
回复
贴出来的语句方法,正常情况下在数据库是不会报错的,除非是SQL2000之前的版本 很有可能是你的使用方法或应用环境造成的,不描述清楚让大家来看这类没意义的错误信息帮不了你
中国风 2016-08-17
  • 打赏
  • 举报
回复
-x 这是生成格式文件 看上面回复,描述清楚自己是怎么应用的?不须我反复提醒 提问要表达清楚自己问题,问题都表达不清楚浪费大家的时间,像这类贴我通常不会回
uutt001 2016-08-17
  • 打赏
  • 举报
回复
引用 4 楼 roy_88 的回复:
程序调用加,no_output 不返回执行结果,再测试看看
DECLARE @Sqlcmd NVARCHAR(max)
SET @Sqlcmd='EXEC master.sys.xp_cmdshell ''bcp "EXEC Demo.dbo.p1" queryout  E:\hqdst\'+ CONVERT(VARCHAR(10),GETDATE(),112)+REPLACE(CONVERT(VARCHAR(8),GETDATE(),8),':','')+'.xml  -c -q -T'',no_output'
EXEC(@Sqlcmd)
还是不行, 是不是要加 -x 转成xml格式文件

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧