У меня есть два запроса:
<cfquery name="getChairReview" datasource="#application.dsn#">
SELECT*
FROM eval_reviews
WHERE faculty = <cfqueryparam cfsqltype="cf_sql_numeric" value="#HTMLEditFormat(trim(arguments.id))#">
AND evalYear = <cfqueryparam cfsqltype="cf_sql_numeric" value="#HTMLEditFormat(trim(arguments.evalYear))#">
AND levels = <cfqueryparam cfsqltype="cf_sql_varchar" value="chair">
</cfquery>
<cfreturn getChairReview>
</cffunction>
<cffunction name="getDeanReview" access="public" returntype="query">
<cfargument name="id" type="numeric" required="yes">
<cfargument name="evalYear" type="numeric" required="yes">
<cfset var getDeanReview = QueryNew("")>
<cfquery name="getDeanReview" datasource="#application.dsn#">
SELECT*
FROM eval_reviews
WHERE faculty = <cfqueryparam cfsqltype="cf_sql_numeric" value="#HTMLEditFormat(trim(arguments.id))#">
AND evalYear = <cfqueryparam cfsqltype="cf_sql_numeric" value="#HTMLEditFormat(trim(arguments.evalYear))#">
AND levels = 'dean'
</cfquery>
<cfreturn getDeanReview>
</cffunction>
Оба они отлично работают, когда evalYear - 2012. Если я отправляю в 2011 году, я получаю сообщение об ошибке getDeanReview
, в котором говорится: [Macromedia] [Драйвер JSBC SQLServer] [SQLServer] Ошибка преобразования типа данных varchar в числовой
Строка, на которой выдается эта ошибка, - AND levels = 'dean'
(примечание: я вынул cfqueryparamчтобы убедиться, что я не ошибся.)
Я нахожу это странным, потому что эти два запроса почти идентичны, за исключением того, что у одного есть стул в качестве параметра, а у другого - декан.(Да, у меня могла бы быть одна функция для выполнения работы ... с дополнительным параметром для уровня)
Я изменил 'dean'
на 'chair'
с evalYear все еще 2011 ... угадайте что?Это сработало.Это довольно странно ...
уровни - это поле varchar.
Есть идеи?