存储过程中如何将一操作步骤写到C:\log文件文本中去
如題
[解决办法]
sp_OACreate等系统储存过程调用File System Object组件来写文件
示例代码:
DECLARE @object int
DECLARE @hr int
DECLARE @src varchar(255), @desc varchar(255)
Declare @tmp int
declare @msg varchar(3000)
SET @msg= 'Hello. MS SQL Server 2000. I Love you!!! ' --这字符串将会被写到SQL Server的安装目录下的Nipsan.Txt文件里面
/* 取得SQL Server的安装路径*/
declare @strPath nvarchar(512)
Exec sp_MSGet_Setup_paths @strPath OUTPUT
Set @strPath=@strPath+ '\Nipsan.Txt ' --组成文件名
--创建Scripting组件实例
EXEC @hr = sp_OACreate 'Scripting.FileSystemObject ', @object OUT
IF @hr <> 0
BEGIN
EXEC sp_OAGetErrorInfo @object, @src OUT, @desc OUT
SELECT hr=convert(varbinary(4),@hr), Source=@src, Description=@desc
RETURN
END
--创建文件
EXEC @hr = sp_OAMethod @object, 'CreateTextFile ', @tmp OUTPUT , @strPath
IF @hr <> 0
BEGIN
EXEC sp_OAGetErrorInfo @object
RETURN
END
--把@msg写到文件里面去
EXEC @hr = sp_OAMethod @tmp, 'Write ',NULL, @msg
IF @hr <> 0
BEGIN
EXEC sp_OAGetErrorInfo @object
RETURN
END
--关闭文件
EXEC @hr = sp_OAMethod @tmp, 'Close ',NULL
IF @hr <> 0
BEGIN
EXEC sp_OAGetErrorInfo @object
RETURN
END
-----------写文件操作Demo完成---------------------------
--打开文件
EXEC @hr = sp_OAMethod @object, 'OpenTextFile ', @tmp OUTPUT ,@strPath
IF @hr <> 0
BEGIN
EXEC sp_OAGetErrorInfo @object
RETURN
END
SET @msg= ' '
--读文件
EXEC @hr = sp_OAMethod @tmp, 'Read ', @msg OUT,3000
IF @hr <> 0
BEGIN
EXEC sp_OAGetErrorInfo @object
RETURN
END
-----读文件操作Demo完成
SELECT @msg AS RESULT