无法使用SQL Server(2008 R2)中的sp_OAMethod'OpenTextFile'方法将unicode字符附加到文本文件

时间:2016-11-03 11:54:29

标签: sql-server unicode sql-server-2008-r2 file-writing

这是我用来编写文本文件的SQL Server存储过程脚本

easyrtc

以下是我为复制问题而执行的示例查询

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[AppendToFileSP] 
    (
     @FileName varchar(4000)
     , @Text1 NVARCHAR(MAX) 
     ) 
AS  
    DECLARE @FS int, @OLEResult int, @FileID int  

    EXECUTE @OLEResult = sp_OACreate 'Scripting.FileSystemObject', @FS OUT  
    --Open a file  
    Print @OLEResult

    EXECUTE @OLEResult = sp_OAMethod @FS, 'OpenTextFile', @FileID OUT, @FileName, 8 , 1 
    Print @OLEResult

    --Write Text1  
    EXECUTE @OLEResult = sp_OAMethod @FileID, 'WriteLine', NULL, @Text1  

    Print @OLEResult
    EXECUTE @OLEResult = sp_OADestroy @FileID  

    Print @OLEResult
    EXECUTE @OLEResult = sp_OADestroy @FS  

    Print @OLEResult
GO

我得到的输出如下

DECLARE @Text1 NVARCHAR(MAX)  
SET @Text1 = N'共發現'
EXEC AppendToFileSP 'C:\AppTextFile1.txt',@Text1

Print '------------------'

SET @Text1 = N'sample'
EXEC AppendToFileSP 'C:\AppTextFile2.txt',@Text1

虽然在两种情况下都创建了文件,但无法将中文字符写入文件(AppTextFile1.txt)。

从存储过程

修改下面的代码后
0
0
-2146828283
0
0
------------------
0
0
0
0
0

EXECUTE @OLEResult = sp_OAMethod @FS, 'OpenTextFile', @FileID OUT, @FileName, 8 , 1

两个文件都已创建。但是,它不符合我的需要,我应该能够创建一个文件并附加unicode文本。

0 个答案:

没有答案