需求:預存程序中讀取本地文字檔內容(路徑存於資料表),內容可能包含資料、另一筆記錄 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;
sp_configure 'Ole Automation Procedures', 1; RECONFIGURE;