我遇到的情况是,我有一个Oracle过程,该过程至少从3或4个不同的地方调用。我需要能够调用自定义代码取决于某些数据。定制代码是特定于客户的-所以,客户A可能想做and,客户B可能想做6-7-8,而客户C不需要做任何额外的事情。当顾客D.Z来的时候,我不想修改我现有的程序。
我希望能够将特定于客户的过程输入到表中。在此现有过程中,如果存在自定义代码过程,请检查该数据库表,如果存在,则执行它。每个客户代码过程都有相同的参数。
例如:
我知道我可以通过构建一个包含对存储过程的调用的字符串来完成这个任务。但是,我想知道Oracle10g是否有内置的东西来做这种事情?
发布于 2009-09-14 17:04:15
我们使用的最后一个解决方案是将过程的名称存储在数据库表中。然后构建SQL调用并使用EXECUTE语句。
发布于 2009-09-01 06:31:04
你的每个客户都有自己的数据库吗?如果是这样的话,最好的选择就是使用条件编译。这具有不需要动态SQL的优点。让主程序始终调用自定义过程,并使用CC标志更改它包含的代码。
否则,Oracle确实有一个规则引擎,但它实际上并不适合我们使用。
发布于 2009-09-01 06:59:06
同意APC的答案,只想对其进行扩展,在这白皮书中,如果您寻找“基于组件的安装”,它描述了使用条件编译解决的类似问题。
https://stackoverflow.com/questions/1358539
复制相似问题