用sp_OACreate等系統儲存過程調用File System Object組件來讀寫文件!!!

解决方案 »

  1.   

    N_chow(一劍飄香++) :
    能否介绍一下 File System Object?
      

  2.   

    示例代碼:
    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
    ENDSET @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
      

  3.   

    有错误!
    [Microsoft][ODBC SQL Server Driver]在 TDS 流中的协仪错误
    [Microsoft][ODBC SQL Server Driver]函数序列错误
      

  4.   

    我在SQL2000下測試OK的呀。
    對了,你的是不是SQL Server7.0??
    你電腦上是否有scrobj.dll這個文件?
      

  5.   

    高!我的确是sqlserver7。
    有scrobj.dll 。
    得了,我安装一个2000试试。
      

  6.   

    N_chow(一劍飄香++) 
    I love u.
    给分!