Я получаю обычную ошибку от SQL Server для запроса с подзапросом, где в подзапросе есть CFQUERYPARAM
.
Конкретная ошибка:
[Macromedia] [Драйвер SequeLink JDBC] [Разъем ODBC] [Microsoft] [Собственный клиент SQL Server 10.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>
Столбец FY определен как decimal(4,0)
.Я пробовал все cfsqltype
, которые имеют дело с числами (cf_sql_integer, cf_sql_numeric, cf_sql_real, cf_sql_float и т. Д.), И все они дают одинаковый результат.
Если я изменю CFQUERYPARAM
в подзапросе простопрямое значение (например, 2012), запрос работает нормально.Очевидно, я бы предпочел бы использовать CFQUERYPARAM
.
- ColdFusion 9.0
- SQL Server 2008
К сожалению, из-зав других случаях я не могу использовать драйверы SQL Server, которые поставляются с ColdFusion, но должен использовать мост ODBC.База данных определяется как системный DSN.
Является ли мост ODBC причиной здесь?У меня было CFQUERYPARAM
в подзапросах по прошлым проектам, так что это действительно меня бросает.