【问题标题】:Updating an individual procedure in an Oracle package更新 Oracle 包中的单个过程
【发布时间】:2011-01-13 04:26:27
【问题描述】:

使用 Oracle 10g。

我正在编写一个脚本,以将在我们的开发系统上所做的增量更改应用到我们的舞台系统。

有没有一种方法可以在包中修改或插入单个过程,而不在我的脚本中包含整个包内容?我认为答案是否定的,但我想确定一下,因为当更改很小时,必须包含任何修改过的包的全部内容会非常难看。

【问题讨论】:

  • 如果看起来很难看,也许你的包裹有点大? - 例如如果太多不相关的过程和功能被捆绑到“超级包”中,那么将它们按照逻辑线拆分成单独的包可能是个好主意。

标签: oracle plsql oracle10g


【解决方案1】:

抱歉,您的直觉是正确的。变化的单位是 PACKAGE BODY。

不知道为什么你认为它很丑。确定这只是为包调用脚本的问题吗?

【讨论】:

    【解决方案2】:

    不,必须将包体作为一个整体进行更换。我不会在单个脚本中包含多个包的代码,而是为每个包规范创建一个文件,并为每个包主体创建一个文件。然后,您可以编写一个“元脚本”来在 SQL Plus 中运行所需的包更改:

    @@package1.spc
    @@package1.bdy
    @@package2.bdy
    

    【讨论】:

    • 您可以进一步分解这个概念,并在包头和包体中为每个过程创建一个文件。通过这种方式,您的“元脚本”可以在构建时将所需的部分组合在一起,但它使您的源代码控制系统中的更改跟踪更容易,特别是对于大型程序。
    • 你的意思是把一个包体的脚本分解成多个文件,每个包体过程在一个单独的文件中?哎呀。我想我会避免这种情况。在具有差异的单个文件中更容易进行更改跟踪。
    • 不,不,不,我不是那个意思!每个文件都包含一个完整的包规范或正文。
    【解决方案3】:

    面临同样的问题。只需为经常更改的过程创建单独的包。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-11-24
      • 1970-01-01
      • 2013-08-20
      • 2014-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多