我尝试使用此代码导出到xml,它可以正常工作
declare @cmd nvarchar(255);
select @cmd = '
bcp "SELECT * from [db].[dbo].[TW_StockReport](0,25,26,4,29,30,19,31) row For XML auto, XMLSCHEMA, root(''node'')" ' +
'queryout "D:\Temp\dbstockandsalereport.xml" -S -T -w -r -t';
exec xp_cmdshell @cmd;
但是当我尝试使用条件时它不起作用
declare @cmd1 nvarchar(1155);
select @cmd1 = 'bcp "Select INVENTLOCATIONID,AgeOfItem as ''ProductYear'',ISNULL(SUM(Qty),0)as ''Unit'' ,COUNT(c.ItemID)As ''ProductType''
from [db].[dbo].[TW_ItemsNonMovement] c
left join [db].[dbo].[TempInventTable] d on c.ITEMID = d.ITEMID collate Thai_CI_AS
where d.TW_DEPARTMENTID = ''PMMan'' and DateDiff <= 120 and Qty > 0
group by INVENTLOCATIONID,AgeOfItem order by INVENTLOCATIONID,AgeOfItem row For XML auto, XMLSCHEMA, root(''node'') ;"' +
'queryout "D:\Temp\PMMan-120.xml" -S -T -w -r -t';
exec xp_cmdshell @cmd1;
最好创建一个存储过程(SP),然后将整个SELECT
语句放在此处。之后,只需在bcp中调用该存储过程即可。
另外。这样,您就可以始终自行测试SP并确保其达到了预期的效果。
因此将如下所示:
bcp "EXEC yourStoredProcedure;" ...