解決 bcp 命令找不到問題(需將 C:\Program Files\Microsoft SQL Server\80\Tools\Binn 加入系統 PATH),並提供完整存儲過程 P_ZehuaSaveXML,依中間表 TB_TABLECOLUMN_T 定義,將多張表資料匯出為標準 XML 格式。
右鍵「我的電腦」→ 內容 → 進階 → 環境變數
系統變數 Path 編輯,末尾加入:
C:\Program Files\Microsoft SQL Server\80\Tools\BINN
CREATE PROC P_ZehuaSaveXML
@TableCodeS VARCHAR(8000), -- 逗號分隔表代碼,如 'WQ_STINFO_B,WQ_PHY_D'
@fname VARCHAR(1000) = 'c:\tmp.xml'
AS
BEGIN
DECLARE @sql NVARCHAR(200), @sql1 VARCHAR(400)
DECLARE @cnt INT, @Table_Name VARCHAR(20)
DECLARE @i INT, @TableCode VARCHAR(20)
DECLARE @err INT, @src VARCHAR(255), @desc VARCHAR(255)
CREATE TABLE ##t (re NVARCHAR(4000))
INSERT ##t SELECT ''
INSERT ##t SELECT ''
SET @i = CHARINDEX(',', @TableCodeS)
WHILE @i > 0
BEGIN
SET @TableCode = LEFT(@TableCodeS, @i-1)
-- 動態 SQL 查詢中間表取得主鍵欄位、排序欄位
SET @sql = N'SELECT @cnt=COUNT(*), @Table_Name=MAX(Table_Name) FROM ('
SET @sql = @sql + N'SELECT TOP 100 PERCENT * FROM TB_TABLECOLUMN_T WHERE '
SET @sql = @sql + N'TABLE_CODE=''' + @TableCode + ''' AND COLUMNS_ISKEY=''√'' '
SET @sql = @sql + N'ORDER BY COLUMNS_SORT)'
-- ... 後續邏輯組裝 XML 節點、寫入 ##t、最後 BCP 匯出檔案
END
END
##t 累積 XML 字串片段。bcp 工具將 ##t 內容匯出為實體 XML 檔。gb2312,符合中文環境需求。