有一个带有2个参数的程序A,这个程序在10个存储过程中调用。(b,c,d ....) 现在proc A更新了3个参数,有没有办法在一次调用10个proc中更新proc A参数列表。
提前致谢
答案 0 :(得分:0)
通常,当您发布API(例如包含多个过程和函数的包规范)并且它已投入使用时,您已经与其他开发人员签订了合同。
除非绝对必要,否则不应更改这些子程序的签名(更改合同条款)。
替代方案包括:
这样,现有代码不会失效。然后,您可以通知开发人员新的子程序(更改合同),他们可以选择是否使用它们。
顺便说一句,您可以使用PL / Scope查找特定子程序的所有用法。 LiveSQL.oracle.com提供了许多PL / Scope脚本。只需搜索“范围”。此外,Philipp Salvisberg在Github上提供了一个很棒的PL / Scope实用程序:https://www.salvis.com/blog/2017/03/17/plscope-utils-utilities-for-plscope-in-oracle-database-12-2/
答案 1 :(得分:0)
如果只有少数程序会更新第3条语句,您可以使用参数的默认值。所以你不必更新所有10个程序。
对于前,
CREATE OR REPLACE PROCEDURE PRC_UPD_MYPROCEDURE
(
p_ParameterOne IN NUMBER,
p_ParameterTwo IN VARCHAR2,
p_ParameterThree IN NUMBER DEFAULT NULL,
)
所以当你调用你的程序(没有第三个参数)时,
PRC_UPD_MYPROCEDURE(1234,'EXAMPLE');
有效。