Запрос Coldfusion CFScript с оператором присваивания MySQL

Я хочу выбрать currentrow как часть моего запроса - я знаю, что могу перебирать запросы и получать переменную currentrow, но я выполняю QoQ, прежде чем использовать строки, и я хочу сохранить исходные строки, например

//Original query
1, Audi
2, BMW
3, Skoda

//QoQ
1, Audi
3, Skoda

Это код, который у меня есть:

q = new Query( datasource = application.db.comcar );
q.setSQL('
    SELECT make, @rownum := @rownum +1 AS  `rownumber` 
    FROM cars, ( SELECT @rownum :=0 )
    LIMIT 10
');
r = q.execute().getResult();

Но выдает следующую ошибку:

Parameter '=' not found in the list of parameters specified

SQL: SELECT make, @rownum := @rownum + 1 AS `rownumber` FROM cars, ( SELECT @rownum    :=0 ) LIMIT 10

Это будет работать в cfquery, но я хотел бы использовать это в CFScript. Есть ли альтернатива использованию := или какой-либо способ избежать этого в запросе.


person Pete    schedule 19.06.2013    source источник
comment
Вы пытались использовать только '=' вместо ':='?   -  person Scott Stroz    schedule 19.06.2013
comment
@ScottStroz попробовал это, получил новый вид ошибки: Argument 2 of function Replace cannot be an empty value. The error occurred in /opt/coldfusion9/CustomTags/com/adobe/coldfusion/query.cfc: line 136   -  person Pete    schedule 19.06.2013
comment
Если вы посмотрите на строку 136 этого файла, вы, вероятно, увидите, что он все еще пытается делать что-то с именованными аргументами — вы заменили все экземпляры := на = ?   -  person Peter Boughton    schedule 19.06.2013
comment
Кроме того, это ошибка в CF — вы должны поднять ее на bugbase.adobe.com   -  person Peter Boughton    schedule 19.06.2013
comment
@PeterBoughton Адам уже сделал cfmlblog.adamcameron.me/2012 /09/   -  person Travis    schedule 19.06.2013
comment
Это будет #3326717 — так как он зарегистрирован в отношении CF9, это не даже включены в список ошибок, на которые Adobe не удосужилась обратить внимание, хотя тот же статус (и ошибка все еще существует в CF10). Я понятия не имею, повлияет ли голосование за существующую ошибку...   -  person Peter Boughton    schedule 19.06.2013
comment
Ошибка, которую я поднял, не связана с этим. На самом деле, если вы читаете либо отчет об ошибке, либо мою статью в блоге, я замечаю, что ситуация, которую я поднимаю, была просто моей глупостью. Однако эта ситуация в соответствии с вопросом является реальной проблемой, и ее следует поднять.   -  person Adam Cameron    schedule 20.06.2013
comment
@PeterBoughton Я удалил оба двоеточия, запрос выполняется, но столбец rownumber — это просто пустая строка.   -  person Pete    schedule 20.06.2013
comment
@AdamCameron Я видел ваш пост, пытаясь найти решение для этого, но, как вы говорите, это не имеет отношения. Я подниму сообщение об ошибке с Adobe, а также размещу его на форуме Adobe.   -  person Pete    schedule 20.06.2013
comment
Я отправил сообщение об ошибке #3581895, я найду обходной путь на данный момент и опубликуйте это как решение в ближайшее время   -  person Pete    schedule 20.06.2013
comment
Извините, невнимательно прочитал - просто увидел двоеточие и сделал неверный вывод. :( Кстати, я почти уверен, что ваша проблема все еще существует и в последней версии CF10 — двоеточия все еще обрабатываются без разбора в Query.cfc — так что, возможно, стоит обновить проблему, если кто-то может это подтвердить.   -  person Peter Boughton    schedule 20.06.2013
comment
У меня есть экземпляр CF10 дома, я протестирую его на обоих, если никто не подтвердит это до этого. Я также проверю Райло   -  person Pete    schedule 20.06.2013
comment
@AdamCameron вау, я перепрыгнул через блок обновлений и погрузился прямо в код в блоге, как Питер. Плохо, йоу. Я не смотрел отчет об ошибке; Я почти уверен, что у Adobe есть база данных ошибок, просто чтобы сказать, что она у них есть.   -  person Travis    schedule 20.06.2013
comment
Таким образом, Adobe даже не проверила ошибку, я полагаю, что она слишком редка, чтобы стать серьезной проблемой, особенно в старой версии CF. Кто-нибудь из вас, ребята, хотел бы предложить обходной путь, чтобы я мог принять ответ на этот вопрос? В итоге я зациклился на запросе и в конце использовал queryAddColumn. Это всего около 200 строк, которые на самом деле не добавляют никакой загрузки страницы. Есть идеи получше?   -  person Pete    schedule 09.07.2013


Ответы (1)


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

Итак, мой обходной путь был следующим:

/*
 * based on the existing query 'tmpFields'
 */

// build array of row numbers
arrRowNumbers = [];
cntRowNumbers = tmpFields.recordCount;

for( r = 1; r <= cntRowNumbers; r++ ) {
    arrayAppend( arrRowNumbers, r );
}

// add a new column with the new row number array
queryAddColumn( tmpFields, "fieldNumber", "integer", arrRowNumbers );
person Pete    schedule 09.07.2013