2012-04-20 1 views
1

Мне было интересно, может ли кто-нибудь помочь мне ... У меня есть хранимая процедура, которая возвращает результат xml. Мне нужно, чтобы сохранить этот результат в текстовом файле в следующем формате:Экспорт xml приводит к txt-файлу в SQL Server 2008

CLEAR,

Chiave REG

VEND REP = 1, кол-во = 1, ЦЕНА = 130, DES = 'кофе'

CHIU TEND = 1

Кол-во Цена и описание взято из результата xml. Возможно ли это? Спасибо заранее ... :)

ответ

0

Вы можете построить строку varchar и сохранить ее в текстовый файл в конце. Ограничение здесь, однако, является максимальным значением varchar (8000).

Я использовал этот sproc для этого;

alter PROCEDURE spWriteStringToFile 
(
@String Varchar(max), --8000 in SQL Server 2000 
@Path VARCHAR(255), 
@Filename VARCHAR(100) 

-- 
) 
AS 
DECLARE @objFileSystem int 
     ,@objTextStream int, 
     @objErrorObject int, 
     @strErrorMessage Varchar(1000), 
     @Command varchar(1000), 
     @hr int, 
     @fileAndPath varchar(80) 

set nocount on 

select @strErrorMessage='opening the File System Object' 
EXECUTE @hr = sp_OACreate 'Scripting.FileSystemObject' , @objFileSystem OUT 

Select @[email protected]+'\'[email protected] 
if @HR=0 Select @[email protected] , @strErrorMessage='Creating file "'[email protected]+'"' 
if @HR=0 execute @hr = sp_OAMethod @objFileSystem , 'CreateTextFile' 
    , @objTextStream OUT, @FileAndPath,2,True 

if @HR=0 Select @[email protected], 
    @strErrorMessage='writing to the file "'[email protected]+'"' 
if @HR=0 execute @hr = sp_OAMethod @objTextStream, 'Write', Null, @String 

if @HR=0 Select @[email protected], @strErrorMessage='closing the file "'[email protected]+'"' 
if @HR=0 execute @hr = sp_OAMethod @objTextStream, 'Close' 

if @hr<>0 
    begin 
    Declare 
     @Source varchar(255), 
     @Description Varchar(255), 
     @Helpfile Varchar(255), 
     @HelpID int 

    EXECUTE sp_OAGetErrorInfo @objErrorObject, 
     @source output,@Description output,@Helpfile output,@HelpID output 
    Select @strErrorMessage='Error whilst ' 
      +coalesce(@strErrorMessage,'doing something') 
      +', '+coalesce(@Description,'') 
    raiserror (@strErrorMessage,16,1) 
    end 
EXECUTE sp_OADestroy @objTextStream 
EXECUTE sp_OADestroy @objTextStream 
Смежные вопросы