[SQL] ColdFusion에서 - 변수 필드 이름은 데이터베이스 쿼리 결과를 통해 반복 할 때
SQLColdFusion에서 - 변수 필드 이름은 데이터베이스 쿼리 결과를 통해 반복 할 때
나는 테이블에 열 이름의 집합이 - 예를 들어, foo1은,에서는 foo2, foo3, foo4. 나는 루프를 통해 동적으로 이러한 열 이름을 참조 할 :
<cfloop index="i" from="1" to="4">
<cfset foo = Evaluate("query.foo" & i)>
</cfloop>
위는 작동하지 않습니다 - ColdFusion에서는 query.foo1가 쿼리 결과에 대한 유효한 참조 경우에도 오류 "변수가 정의되지 않았습니다"가 발생합니다. 어떻게하면 다른 할 수 있습니까?
해결법
-
==============================
1.그런 것들에 대한) (평가 사용하지 마십시오! 그것은 느린 피해야한다.
그런 것들에 대한) (평가 사용하지 마십시오! 그것은 느린 피해야한다.
<cfloop index="i" from="1" to="4"> <cfset foo = query["foo" & i][query.CurrentRow]> </cfloop>
또는 당신이 좋아하는 경우 :
<cfloop index="i" from="1" to="4"> <cfset foo = query["foo#i#"][query.CurrentRow]> </cfloop>
() 평가하기의 코드 비트를 평가한다. 언어 통합, 더 적절한 방법으로 더 우아하게 해결 될 수있는 일을 위해 그것을 사용하지 마십시오.
편집하다:
액세스하는 쿼리는 "각 브래킷"- 구문 개체 때 (1 기) 행 번호 지수 (쿼리 [ "foo는 # i 서 #"] [ROWNUM])에 추가해야합니다. 전통이 - 구문 (query.foo1)을 "점"을 사용하면 현재 행은 암시 적이다.
명시 적으로 현재 행에 액세스하려면 QueryObject.CurrentRow 속성을 사용합니다. 그러나 QueryObject.RecordCount 어떤 양의 정수의 최대 수 있습니다. 범위 체크는 CurrentRow와 이외의 아무 것도 좋습니다.
이 흥미로운 분야를 엽니 다 : 당신은 '랜덤 액세스'와 쿼리 개체를 사용하기 시작할 수 있습니다. 이전 (CFMX 전에) 당신이 할 수있는 모든 당신이 찾는 그 일을 잡아 당겨, 처음부터 끝까지 반복 처리를했다. 지금은 당신이 다른 방법으로 사용할 수있는 중첩 된 구조체 / 배열 같다.
-
==============================
2.당신은 매우 가깝습니다. 이 시도:
당신은 매우 가깝습니다. 이 시도:
<cfset query.foo1 = "foo val 1"> <cfset query.foo2 = "foo val 2"> <cfset query.foo3 = "foo val 3"> <cfset query.foo4 = "foo val 4"> <cfloop index="i" from="1" to="4"> <cfset foo = Evaluate("query.foo#i#")> <cfoutput>#foo#<br></cfoutput> </cfloop>
from https://stackoverflow.com/questions/1064305/coldfusion-variable-field-name-when-looping-through-database-query-results by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 최적화 GroupWise에 최대 쿼리 (0) | 2020.05.16 |
---|---|
[SQL] 열 이름에 예약어를 사용하여 (0) | 2020.05.16 |
[SQL] PostgreSQL는 WHERE 절에 열 별칭을 허용하지 않습니다 (0) | 2020.05.16 |
[SQL] INNER는 DB2에 대한 업데이트는 SQL에 가입하세요 (0) | 2020.05.16 |
[SQL] 오라클 11G에서 INSERT SELECT 문 (0) | 2020.05.16 |