首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

T-SQL 透過 OLE 自動化物件操作本地檔案系統

     編輯:關於SqlServer

需求:預存程序中讀取本地文字檔內容(路徑存於資料表),內容可能包含資料、另一筆記錄 ID 或另一個檔案路徑。為避免應用層多次往返資料庫,直接在 T-SQL 中用 sp_OACreate/sp_OAMethod 呼叫 Scripting.FileSystemObject 讀取檔案,回傳內容供後續處理。

核心程式碼

DECLARE @FilePath NVARCHAR(400) = N'C:\tmp.txt';
DECLARE @INT_ERR INT, @INT_FSO INT, @INT_OPENFILE INT, @STR_CONTENT VARCHAR(8000);

-- 建立 FSO 物件
EXEC @INT_ERR = sp_OACreate 'Scripting.FileSystemObject', @INT_FSO OUTPUT;

-- 開啟文字檔(1=讀取、FALSE=不存在不建立)
EXEC @INT_ERR = sp_OAMethod @INT_FSO, 'OpenTextFile', @INT_OPENFILE OUTPUT, @FilePath, 1, FALSE;

-- 讀取全部內容
EXEC @INT_ERR = sp_OAMethod @INT_OPENFILE, 'ReadAll', @STR_CONTENT OUTPUT;

-- 釋放物件
EXEC @INT_ERR = sp_OADestroy @INT_OPENFILE;
EXEC @INT_ERR = sp_OADestroy @INT_FSO;

-- 後續可對 @STR_CONTENT 進行解析、拆分路徑等處理
SELECT @STR_CONTENT AS FileContent;

補充說明

  • 同樣方式可呼叫 FSO 所有方法(建立/刪除/複製/移動檔案、資料夾操作等),極大擴展 T-SQL 能力。
  • 需啟用「Ole Automation Procedures」伺服器設定:sp_configure 'Ole Automation Procedures', 1; RECONFIGURE;
  • 生產環境需注意權限與安全性,避免任意檔案存取風險。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved