Можно ли вызвать хранимую процедуру в cfloop и вывести динамические выходные параметры в Coldfusion?
Последний вопрос на сегодня, все еще использующий Coldfusion8 и MySQL.
У меня есть таблица с продуктами, каждый с ценами A, B и C. Мне нужно извлечь минимальное и максимальное значения для A, B, C для всех цен (A_min, A_max, B_min, B_max, C_min, C_max)
Я думал, что создам хранимую процедуру и перебираю A, B, C примерно так:
<cfloop list="A,B,C" index="what" delimiters=",">
<cfstoredproc procedure="proc_search_select_minmax" datasource="dtb">
<cfprocparam type="in" value="#what#" cfsqltype="cf_sql_varchar" maxlength="15">
<cfprocparam type="in" value="#variables.xxx#" cfsqltype="cf_sql_varchar" maxlength="13">
<cfprocparam type="in" value="#variables.yyy#" cfsqltype="cf_sql_varchar" maxlength="13">
<cfprocparam type="in" value="#variables.zzz#" cfsqltype="cf_sql_text" maxlength="4">
<cfprocparam type="out" cfsqltype="cf_sql_decimal" variable="#what#_min">
<cfprocparam type="out" cfsqltype="cf_sql_decimal" variable="#what#_max">
</cfstoredproc>
</cfloop>
Таким образом, идея состояла в том, чтобы выполнить это три раза для A, B и C и получить переменные A_min, A_max, B_min ... из цикла.
Но у меня есть проблемы с моими out-параметрами, которые внутри MySQL, я заявляю как:
CREATE ... PROCEDURE `proc_search_select_minmax`(..., OUT `outputMin` DECIMAL(12,2), OUT `outputMax` DECIMAL(12,2))
....
SET outputMin = min(what);
SET outputMax = max(what);
Ошибка Coldfusion говорит:
Error Executing Database Query
@
<cfprocparam type="out" cfsqltype="cf_sql_decimal" variable="#what#_min">
<cfprocparam type="out" cfsqltype="cf_sql_decimal" variable="#what#_max">
Questions:
Должен ли я присвоить своим параметрам то же имя, что и внутри MySQL, или достаточно правильного порядка?
Что еще более важно, я могу установить выходные переменные динамически как это? Если нет, есть ли другие способы, кроме трехкратного вызова хранимой процедуры?