t-sql读写文件
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