繁体   English   中英

从Oracle过程调用特定于数据的存储过程

[英]Call data-specific stored procedure from Oracle procedure

我有一种情况,我有一个Oracle程序,从至少3或4个不同的地方调用。 我需要能够根据某些数据调用自定义代码。 自定义代码是客户特定的 - 因此,客户A可能想要做客户B可能想要做的ABC 6-7-8而客户C不需要做任何额外的事情。 当客户D ... Z出现时,我不想修改我现有的程序。

我希望能够将客户特定的程序输入到表格中。 在此现有过程中,检查数据库表是否存在自定义代码过程,如果存在,则执行它。 每个客户代码程序都具有相同的参数。

例如:

  1. 我的应用程序(3个以上的地方)称这个“删除”程序
  2. 在此删除过程中,查找要调用的子过程的名称(如果存在的话)
  3. 如果存在,执行该删除过程(传入参数)

我知道我可以通过构建一个包含对存储过程的调用的字符串来做到这一点。 但是,我想知道Oracle 10g是否有内置的东西来做这种事情?

您的每个客户都有自己的数据库吗? 如果是这样,最好的选择是使用条件编译 这具有不需要动态SQL的优点。 让主程序始终调用自定义过程,并使用CC标志来改变它包含的代码。

否则,Oracle确实有一个规则引擎,但它并不适合我们使用。

我们使用的最终解决方案是将过程的名称存储在数据库表中。 然后,我们构建SQL调用并使用EXECUTE语句。

同意APC的答案,只是为了扩展它,在白皮书中,如果你寻找“基于组件的安装”,它描述了使用条件编译解决的类似问题。

鉴于要求,您的解决方案似乎是合理的,所以我投票了。

另一个选择是循环查看表查找的结果,并调用大案例语句中的过程。 这将是更多的代码,但它具有使依赖链可见的优势,因此您可以更轻松地捕获缺少的权限和无效的过程。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM