2014-01-18 1 views
-1

Я думаю, что у меня самый простой сценарий. Я просто хочу передать его всем для проверки здравомыслия. Вот идея:Обычный способ выполнения хранимой процедуры от 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?

ответ

4

Um ... просто используйте <cfstoredproc> вместо того, чтобы использовать два разных подхода CFScript, которые являются взаимоисключающими друг друга на платформах CFML.

+0

Ох. Наверное, до сих пор у меня есть голова вверх до cfscript, что я не могу оглянуться назад ... Хммм ... а? Я должен буду изучить это. Благодаря! –

+0

Возможно, как часть процесса установки, я мог бы иметь sproc.cfc либо версию ACF, либо версию Railo, и не нужно делать if/then каждый раз, когда вызывается функция. –

+0

Я думаю, что ты прав. Не удивительно. Мне нужно вернуться к использованию тегов вместо скриптовых компонентов - по крайней мере, для хранимых процедур. –

Смежные вопросы