-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服務器上運行源代碼,保持源代碼是否相同,這是一種有效的方法嗎?
哦。我想我已經把我的腦袋擡起來了,以至於我不能回頭看......嗯......呃?我得看看那個。謝謝! –
也許作爲安裝過程的一部分,我可以讓sproc.cfc成爲ACF版本或Railo版本,而不必在每次調用函數時都執行if/then操作。 –
我認爲你是對的。那裏沒有什麼驚喜我需要回到使用標籤而不是腳本組件 - 至少對於存儲過程。 –