【发布时间】:2017-05-10 14:48:56
【问题描述】:
我有一个 sql 查询,它将表的每个 XML 行导出到单个 XML 文件。该过程完美运行,除了它停止并且不会一次处理所有行。我必须更改行号才能从它停止的地方开始。它将使用此过程无错误地处理所有行,但是我希望它一次处理所有行。 这是我的查询:
DECLARE
@FILENAME VARCHAR(500),
@bcpcmd VARCHAR(2000),
@RN VARCHAR(10),
@i int;
DECLARE @Table table (RN int, IsDone char(1))
INSERT @Table SELECT RN, 0 FROM [x_rpt].[dbo].[x_abc] WHERE RN>=1 --this is where I update RN to process records where it leaves off--
SET @i=0
WHILE @i<= (SELECT COUNT(*) FROM @Table WHERE IsDone = '0')
BEGIN
SELECT TOP 1 @RN=RN FROM @Table WHERE IsDone = 0
SET @FILENAME = '"C:\temp\data\abc\Jan_2016_'+@RN+'.xml"'
SET @bcpcmd = 'BCP "SELECT [XML] from [x_rpt].[dbo].[x_abc] WHERE RN='+@RN+'" queryout "'
SET @bcpcmd = @bcpcmd + @FILENAME + '" -w -T -S "SERVER"'
EXEC master..xp_cmdshell @bcpcmd
UPDATE @Table set IsDone='1' where RN=convert(int,@RN)
SET @i=@i+1
END
【问题讨论】: