2014-10-16 38 views
1

我想寫一個查詢來選擇一個存儲過程的結果到臨時表中。但是,存儲過程已經設置好,以便在運行時返回1結果,沒有別名。 (見下文)OPENROWSET沒有列別名?

enter image description here

很明顯,我得到一個錯誤,當我嘗試和選擇數據到一個臨時表。

對象或列名缺失或爲空。對於SELECT INTO 語句,請確認每列都有一個名稱。對於其他語句,請查看 以獲取空白別名。別名定義爲「」或[]是不允許的。 將別名更改爲有效的名稱。

有沒有什麼辦法繞過這個,因爲我將無法更新過程來輸出別名!基本上Im做一個

SELECT * INTO #tmptable 
FROM OPENROWSET ('SQLNCLI', 'Server=ServerName;Trusted_Connection=yes;','SET FMTONLY OFF EXEC sp_name') 

回答

2

如果你知道你將多少列得到了OPENROWSET回來的一種方式後,那麼你就可以在插入值之前創建臨時表;這允許你給這個列命名。

CREATE TABLE #tmptable (Value INT NOT NULL) 
INSERT #tmptable 
SELECT * FROM OPENROWSET ('SQLNCLI','Server=ServerName;Trusted_Connection=yes;','SET FMTONLY OFF EXEC sp_name') 
-- DROP TABLE #tmptable 

如果你不知道你有多少列正在返回......我不知道這是可能的。