의 CFQUERYPARAM과 관련된 미스터리 오류 하위 쿼리가있는 쿼리에서 SQL Server의 일반적인 오류가 발생합니다 (하위 쿼리에 CFQUERYPARAM
이있는 경우).하위 쿼리
특정 오류 :
[매크로 미디어] [SequeLink JDBC 드라이버] [ODBC 소켓] [마이크로 소프트] [SQL 서버 네이티브 클라이언트 10.0] 구문 오류, 권한 위반 또는 기타 비특이적 오류
은 내가이 쿼리에 그것을 아래로 증류 할 수있었습니다 회계 연도 열이 decimal(4,0)
으로 정의된다
<cfquery name="statusQuery" datasource="#application.dsn#">
SELECT
*
FROM
BStatus A
WHERE
A.FY = <cfqueryparam cfsqltype="cf_sql_decimal" value="2012" >
AND
A.BStatus like '0%'
AND
A.BStatus != '00'
AND
A.BDate = (
SELECT
MAX(B.BDate)
FROM BStatus B
WHERE
B.FY = <cfqueryparam cfsqltype="cf_sql_decimal" value="2012" >
AND
B.BStatus like '0%'
AND
B.BTrack = A.BTrack
AND
B.BCode = A.BCode
)
AND
A.BCode ='XYZ123AB'
</cfquery>
(간체). 나는 숫자 (cf_sql_integer, cf_sql_numeric, cf_sql_real, cf_sql_float 등)를 처리하는 모든 cfsqltype
을 시도했으며 모두 동일한 결과를 제공합니다.
하위 쿼리의 CFQUERYPARAM
을 바로 값 (예 : 2012)으로 변경하면 쿼리가 올바르게 작동합니다. 분명히 내가 크게 CFQUERYPARAM
를 사용하는 것이 좋습니다 것입니다.
- ColdFusion에서 9.0
- 2008
SQL 서버 불행하게도, 다른 상황에 내가 ColdFusion과 함께 제공되는 SQL 서버 드라이버를 사용할 수 있지만, ODBC 브리지를 사용해야 때문에. 데이터베이스는 시스템 DSN으로 정의됩니다.
여기에서 ODBC 브리지가 원인입니까? 나는 이것이 과거의 프로젝트에서 서브 쿼리로 CFQUERYPARAM
을 가졌기 때문에 이것이 정말로 나를 던지고있다.
변수에 2012를 지정하고 해당 변수를 cfqueryparam에 사용하십시오. cf_sql_numeric/cf_sql_integer를 사용하여 동일하게 시도하십시오 – DG3
cfsqltype 속성은 필수는 아니지만이를 제거하고 차이가 있는지 확인하십시오. – duncan
@ user508518 : 완료했습니다. 그것은 원래 변수 였고 테스트를 단순화하기 위해 그것을 상수로 변경했습니다. – ale