declare @FilePath nvarchar(400),@xmlstr varchar(8000);
Declare
@INT_ERR int ----错误代码,0 成功
Declare
@INT_FSO int ----FSO对象标志
Declare
@INT_OPENFILE int ----文本文件对象标志
Declare
@STR_CONTENT varchar(8000) ----文件内容
DECLARE
@output varchar(255)
DECLARE
@hr int
DECLARE
@source varchar(255)
DECLARE
@description varchar(255)
select
@FilePath = logid from optlog;
set
@FilePath = 'f:/' + @FilePath + '.xml';
--set
@FilePath='f:/mp.xml'
--set
@STR_CONTENT = @xmlstr
select
@STR_CONTENT = xmlinfo from optlog;
--创建FSO对象
--甚至可以是我们自己写的dll控件都可以
EXEC
@INT_ERR = sp_OACreate 'Scripting.FileSystemObject', @INT_FSO OUTPUT
if(@INT_ERR
<> 0)
BEGIN
EXEC
sp_OAGetErrorInfo @INT_FSO
RETURN
END
-----文件路径
Declare
@STR_FILENAME nvarchar(50)
Set
@STR_FILENAME = @FilePath
---FSO.OpenTextFile(FileName,
1, FALSE),第二个参数1表示只读,第三个参数false表示文件不存在时不创建
----创建文本文件对象
----FSO的所有方法都可以用下面类似方式创建,可以实现文件的任意操作,非常方便
EXEC
@INT_ERR=SP_OAMETHOD @INT_FSO,'CreateTextFile',@INT_OPENFILE OUTPUT,@STR_FILENAME
if(@INT_ERR
<> 0)
BEGIN
EXEC
sp_OAGetErrorInfo @INT_OPENFILE,@source OUT, @description OUT
SELECT
@output = ' Source:
' + @source
PRINT
@output
SELECT
@output = ' Description:
' + @description
PRINT
@output
RETURN
END
----读取文件,内容放到@STR_CONTENT
----读到了文件内容,后面的处理就好办了
EXEC
@INT_ERR=SP_OAMETHOD @INT_OPENFILE,'Write',null,@STR_CONTENT
if(@INT_ERR
<> 0)
BEGIN
EXEC
sp_OAGetErrorInfo @INT_FSO, @description OUT
SELECT @output = ' Source:
' + @source
PRINT
@output
SELECT
@output = ' Description:
' + @description
PRINT
@output
RETURN
END
----销毁创建的对象
EXEC
@INT_ERR=SP_OADESTROY @INT_OPENFILE
EXEC
@INT_ERR=SP_OADESTROY @INT_FSO
SELECT @output = '