2015-05-14 2 views
1

Модернизированные от CF10 CF11 до обновления 5 (с исправлением hf1100-3971083.jar) DB (v10.2 DB2)cfprocparam бросает НЕЗАКОННЫЙ СИМВОЛ =;

получает ошибку на коде, который вызывает хранимую Proc.

Error Executing Database Query. 
[Macromedia][DB2 JDBC Driver][DB2]ILLEGAL SYMBOL =; 
The error occurred in ...: line 238 
236 : <cfstoredproc datasource="#application.dsn#" procedure="LIVE.SP" > 
237 :  <cfprocparam type="In" cfsqltype="CF_SQL_BIGINT" dbvarname="STOPID" null="yes" /> 
238 :  <cfprocparam type="In" cfsqltype="CF_SQL_INTEGER" dbvarname="POID" null="no" value="#val(qry.id)#" /> 
239 : </cfstoredproc> 

Реальный код выглядит следующим образом - и отлично работает в CF10 ....

"QRY" возвращает значение для "ID"

<cfloop query="qry" > 

    <cfstoredproc datasource="#application.dsn#" procedure="LIVE.SP" > 

     <cfprocparam type="In" cfsqltype="CF_SQL_BIGINT" dbvarname="STOPID" null="yes" /> 

     <cfprocparam type="In" cfsqltype="CF_SQL_INTEGER" dbvarname="POID" null="no" value="#val(qry.id)#" /> 

    </cfstoredproc> 

</cfloop> 

Это происходит, если или нет «отладка» включена (для исправления hf1100-3971083.jar)

Кажется, что есть другие, требующие проблем cfprocparam, но решения этих проблем не устраняют ЭТУ проблему.

Любые идеи?

+0

, если бы это было в proc - я ожидал бы его ошибки в CF10 ... Но я попробую ваше предложение – jpmyob

+0

жесткое кодирование не имеет значения. – jpmyob

+0

* Если бы это было в proc - я ожидал бы ошибки в CF10 * Не обязательно. Согласен, это менее вероятно, но ... изменения драйверов могут вызвать различия в поведении. Можете ли вы протестировать один и тот же SQL (с жестко закодированными значениями) из cfquery? Я не знаком с DB2. – Leigh

ответ

1

После нескольких дней попыток нескольких предложений от людей. Я удалил аргументы «dbvarname», убедился, что мои аргументы являются порядковым совпадением с процедурой, и это заставляет меня пройти мимо ошибки.

<cfstoredproc datasource="#application.dsn#" procedure="LIVE.SP" > 
    <cfprocparam type="In" cfsqltype="CF_SQL_BIGINT" null="yes" /> 
    <cfprocparam type="In" cfsqltype="CF_SQL_INTEGER" null="no" value="#val(qry.id)#" /> 
</cfstoredproc> 

Это работает без ошибок. Я не могу сказать, что я НРАВИТСЯ решение. но хорошо. Другим решением, которое, вероятно, работал бы в том, чтобы использовать

<cfquery...> 
    call 'procName' (arg => value, arg2 => val2); 
</cfquery> 

однако, это унаследованный код, который мы надеемся, привычка существовать более года дольше (... надеюсь ...). Поэтому я не собираюсь волноваться об этом.