Странная ошибка базы данных в Coldfusion

У меня есть два запроса:

<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></cfqueryparam></cfquery>

<cfreturn getchairreview="">



<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'
</cfqueryparam></cfqueryparam></cfquery>

</cfset></cfargument></cfargument></cffunction>
</cfreturn>

Оба они отлично работают, когда evalYear - 2012. Если я отправлю в 2011 году, я получаю сообщение об ошибке getDeanReview котором говорится: [Macromedia] [SQLServer JDBC Driver] [SQLServer] Ошибка преобразования типа данных varchar в числовой

Линией, на которую она дает эту ошибку, является уровень AND levels = 'dean' (примечание: я вынул тэг cfqueryparam, чтобы убедиться, что я этого не сделал).

Я нахожу это странным, потому что эти два вопроса почти идентичны, за исключением того, что у него есть стул как парам, а другой - декан. (Да, у меня могла быть одна функция для выполнения задания... с дополнительным параметром для уровня)

Я изменил 'dean' на 'chair' с evalYear еще в 2011 году... угадайте, что? Это сработало. Это довольно странно...

уровни - это поле varchar.

Есть идеи?

1 ответ

Тот странный.

Хорошо, для grits & shins, попробуйте сделать второй запрос: и уровни, такие как% dean%

Кроме того, попробуйте это, как у вас есть, но удалите строку из года и пусть она выбирает все независимо от года... посмотрите, как выглядит ваш вывод.

Наконец.. Я не думаю, что вам нужно беспокоиться о HTMLEditFormat в ваших параметрах значения в cfqueryparam.

обкрадывать

licensed under cc by-sa 3.0 with attribution.