Странная ошибка базы данных в Coldfusion - PullRequest
1 голос
/ 14 января 2012

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

<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.

Есть идеи?

1 Ответ

2 голосов
/ 14 января 2012

Это странно.

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

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

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

Роб

...