【发布时间】:2016-10-06 08:21:22
【问题描述】:
你能告诉我为什么下面的sql有问题吗?
如果我运行这部分:
Select SmsSCh_ID AS "@Name", CONVERT(CHAR(10), SmsSCh_Scheduledate, 101)
+ ' ' + LTRIM(RIGHT(CONVERT(CHAR(20), SmsSCh_Scheduledate, 20), 10)) AS "@Time" from Prj_SmsSch
for XML path ('Task'), ROOT('appSchedule')
我得到了正确的结果,但是当我把它放在代码中以便我可以将 xml 导出到文件中时,我得到了错误。
这是我的完整代码:
DECLARE
@FileName VARCHAR(50),
@SQLCmd VARCHAR(500)
select
@FileName = 'C:\iman\SampleXMLOutput1.xml'
--in this command, we are making sure there is only one ROOT node
SELECT @SQLCmd = 'bcp '
+ '"Select SmsSCh_ID AS "@Name", CONVERT(CHAR(10), SmsSCh_Scheduledate, 101)
+ ' ' + LTRIM(RIGHT(CONVERT(CHAR(20), SmsSCh_Scheduledate, 20), 10)) AS "@Time" from Prj_SmsSch'
+ ' for XML path ('Task'), ROOT('appSchedule')'"'
+ ' queryout '
+ @FileName
+ ' -w -T -S' + @@SERVERNAME
-- display command, for visual check
SELECT @SQLCmd AS 'Command to execute'
-- create the XML file
EXECUTE master..xp_cmdshell @SQLCmd
我认为问题可能是@SQLCmd 中的'。 错误:
Msg 102, Level 15, State 1, Line 13
Incorrect syntax near ' + LTRIM(RIGHT(CONVERT(CHAR(20), SmsSCh_Scheduledate, 20), 10)) AS "@Time" from Prj_SmsSch'.
Msg 103, Level 15, State 4, Line 14
The identifier that starts with ''
+ ' queryout '
+ @FileName
+ ' -w -T -S' + @@SERVERNAME
' is too long. Maximum length is 128.
Msg 105, Level 15, State 1, Line 14
Unclosed quotation mark after the character string ''
+ ' queryout '
+ @FileName
+ ' -w -T -S' + @@SERVERNAME
'.
感谢您的帮助
【问题讨论】:
-
什么是错误信息。你能把它粘贴到问题中
-
是的,我确实添加了错误
标签: sql sql-server xml sql-server-2008