2013-03-01 4 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> 

## 완료 란 의미를 확인하기 위해 Google 전체에서 확인했습니다. 누군가 나를 좀 도와 주실 수 있습니까? 내가 그것을 버리려고 할 때, 그것도 똑같은 것을주는 ## Completions.## Coldfusion 변수 앞에 있음

답변

8

##은 리터럴 #을 이스케이프 처리하여 데이터베이스에 전달 된 SQL의 일부입니다. (CFML 해시 표현을 표시하는 것과 반대)

#tablenamelocal temporary table에 대한 Microsoft SQL Server 구문입니다.

비트는 임의의 테이블 이름입니다 (따라서 검색하는 것이 관련성이없는 이유).

##tablename으로 작성된 전역 임시 테이블이 있으며 cfquery에서 ####tablename으로 이스케이프 처리해야합니다.

+0

감사합니다 피터 ... – Indy

+0

한 가지 질문. 당신은 이것이 탈출 리터럴로 작동하는 하나의 로컬 임시 테이블이지만 당신이 준 링크에서 ## tablename은 글로벌 임시 테이블이라고 말했습니다. 따라서 전역 임시 테이블을 만들려면 ColdFusion을 사용할 때 ### tablename이어야합니다. – Indy

+0

아니요. 이스케이프 처리에는 쌍이 필요하기 때문에 '### tablename'은 이스케이프 처리 된 해시 다음에 닫히지 않은 해시 표현식이 뒤따라야합니다 (구문 오류). 짝수 개의 해시가 있어야합니다. (이것은 JS에서 어떻게 이스 케이 핑이 다른 언어에서 어떻게 작동하는지와 전혀 다르지 않습니다.'\ ''를 써서는 안됩니다. '\'\ '\' '을해야합니다 - 기본적으로 같은 것입니다.) –