2013-03-01 70 views
2
<CFQUERY Name="LoadCompletions" datasource="#request.datasource#"> 
SELECT n.*, u.UserID into ##Completions 
FROM 
    OPENROWSET(
     'Microsoft.ACE.OLEDB.12.0', 
     'Excel 12.0;HDR=YES;Database=#Destination_File#', 
     'SELECT * FROM [Sheet1$]') n 
    inner join LE_User u on 's'+n.id = u.login_name 
</cfquery> 

我檢查了所有谷歌,看看什麼##完成意味着什麼。有人可以幫我嗎?當我嘗試轉儲它時,它會給出同樣的事情##完成。##前面的Coldfusion變量

回答

8

##用於轉義文字#,因此它是傳遞到數據庫的SQL的一部分。 (與標記CFML散列表達式相反)。

#tablenamelocal temporary table的Microsoft SQL Server語法。

Completions位只是一個任意表名(因此爲什麼搜索它不會引起任何相關的)。

請注意,還有全局臨時表,編寫爲##tablename,需要在cfquery中將其轉義爲####tablename

+0

感謝彼得... – Indy 2013-03-04 07:30:57

+0

只是一個問題,但。你說這是一個本地臨時表,其中一個#作爲轉義字面值,但在你給出的鏈接中,它表示## tablename是一個全局臨時表。所以要創建一個全局臨時表,在使用Coldfusion時它應該是### tablename? – Indy 2013-03-04 07:36:21

+0

不,因爲轉義需要配對,所以'### tablename'將會是一個轉義散列,後跟一個未關閉的散列表達式(所以語法錯誤)。你必須有一個偶數的散列。 (這與其他語言如何轉義作品沒有什麼不同 - 例如在JS中,你不能寫'\''''' - 你必須做'\'\''' - 它基本上是一樣的。「) – 2013-03-04 11:59:17