2008-11-13 122 views
3

幸运的是,我必须与Oracle合作。和包。版本控制中的Oracle软件包?

我有一个软件包,很多不同的开发人员都在触摸它,它吓坏了我。是否可以在版本控制中放置一个包?那里有一些软件已经做到了吗?如果没有,是否有某种出口程序?我可以从文件系统中抓取文件吗?

+0

见http://stackoverflow.com/questions/706026/how-do-you-work-on-oracle-packages-in-a-collaborative-version-controlled- environ和http://stackoverflow.com/questions/111852/tools-to-work-with-stored-procedures-in-oracle-in-a-team – Mac 2009-05-15 11:58:32

回答

4

他们是如何输入它?我们过去在上一份工作中工作的方式是编辑一个文本文件,并使用SQL * Plus加载它。您可以将该源文件放在版本控制下。

来源必须介于“CREATE OR REPLACE PACKAGE MYPACKAGE AS”和“END;”之间,后面跟着一行斜线(“/”);和“包装身体”而不是“包装”一样。

是的,有一种方法可以将源代码从Oracle中移出。它在一张表中,逐行显示,查找ALL_SOURCE和USER_SOURCE。您可以通过查询拔不出来像

SELECT TEXT FROM ALL_SOURCE 
WHERE TYPE='PACKAGE BODY' 
    AND NAME='MYPACKAGE' 
    AND OWNER='MYPACKAGEOWNER' 
ORDER BY LINE 

(未经测试,因为我不再有访问Oracle)的“一揽子”和同上。

我认为最好是使用SQL * Plus将它重新加载到Oracle中;确保设置“SCAN OFF”。

+0

只是想补充说:如果你的开发人员只是编辑和重新编译在没有版本控制下的源文件的情况下,你是非常适合担心的。他们可能喜欢这个,因为使用TOAD或类似的工具很容易,但我不喜欢它作为维护代码的一种方式。 – 2008-11-13 18:59:49

1

我们有一个数据库级触发器来捕获软件包的更改并将源保存在一个单独的表中。它不如版本控制,但至少你知道什么时候有变化,如果以后的变化践踏它,可以检索它。

-1

再看看this link。这是一个PHP/mySQL版本控制工具,可以与任何数据库类型一起工作,学习起来相当简单。