Я думаю, что у меня самый простой сценарий. Я просто хочу передать его всем для проверки здравомыслия. Вот идея:Обычный способ выполнения хранимой процедуры от ColdFusion и Railo
GetErrorCodes.cfm выполняет следующие действия:
<cfscript>
response = new ErrorCodes().WhereXXX(); // ACF or Railo, doesn't matter
</cfscript>
ErrorCodes.cfc:
function WhereXXX() {
return new sproc().exec('app.GetErrorCodes'); // All my functions will do this instead of executing the sproc themselves.
}
sproc.cfc:
component {
function exec(procedure) {
local.result = {};
if (server.ColdFusion.productname == 'Railo') {
return new Railo().exec(arguments.procedure); // Has to be outside of sproc.cfc because ColdFusion throws a syntax error otherwise.
}
local.svc = new storedProc();
local.svc.setProcedure(arguments.procedure);
local.svc.addProcResult(name='qry');
try {
local.obj = local.svc.execute();
local.result.Prefix = local.obj.getPrefix();
local.result.qry = local.obj.getProcResultSets().qry;
} catch(any Exception) {
request.msg = Exception.Detail;
}
return local.result;
}
Railo.cfc:
component {
function exec(procedure) {
local.result = {};
try {
storedproc procedure=arguments.procedure result="local.result.Prefix" returncode="yes" {
procresult name="local.result.qry";
}
} catch(any Exception) {
request.msg = Exception.Message;
}
return local.result;
}
}
Итак, я работаю над этим весь день, но скажите мне, это разумный способ сохранить исходный код одинаковым, если он будет запущен на сервере ColdFusion или на сервере Railo?
Ох. Наверное, до сих пор у меня есть голова вверх до cfscript, что я не могу оглянуться назад ... Хммм ... а? Я должен буду изучить это. Благодаря! –
Возможно, как часть процесса установки, я мог бы иметь sproc.cfc либо версию ACF, либо версию Railo, и не нужно делать if/then каждый раз, когда вызывается функция. –
Я думаю, что ты прав. Не удивительно. Мне нужно вернуться к использованию тегов вместо скриптовых компонентов - по крайней мере, для хранимых процедур. –