Stored procedures 从ColdFusion和Railo执行存储过程的常用方法
我想我已经构建了最简单的场景。我只想把它传给每个人做一个精神检查。我的想法是: GetErrorCodes.cfm执行以下操作:Stored procedures 从ColdFusion和Railo执行存储过程的常用方法,stored-procedures,coldfusion,railo,Stored Procedures,Coldfusion,Railo,我想我已经构建了最简单的场景。我只想把它传给每个人做一个精神检查。我的想法是: GetErrorCodes.cfm执行以下操作: <cfscript> response = new ErrorCodes().WhereXXX(); // ACF or Railo, doesn't matter </cfscript> sproc.cfc: component { function exec(procedure) { local.result = {};
<cfscript>
response = new ErrorCodes().WhereXXX(); // ACF or Railo, doesn't matter
</cfscript>
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服务器上运行源代码,这是保持源代码不变的明智方法吗?嗯。。。只是使用,而不是尝试使用两种不同的CFML平台相互排斥的CFScript方法。Oh。我想我已经把头抬起来了,以至于我不能回头看。。。六羟甲基三聚氰胺六甲醚。。。。嗯??我得调查一下。谢谢也许作为安装过程的一部分,我可以让sproc.cfc成为ACF版本或Railo版本,而不必在每次调用函数时都执行if/then。我认为你是对的。这并不奇怪。我需要重新使用标记而不是脚本化组件——至少对于存储过程是这样。
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;
}
}