2012-02-20 7 views
3

私は、すでに定義され宣言されているストアドプロシージャを含むパッケージを持つOracleデータベースを作成しています。パッケージを更新するSQLスクリプト

新しいストアドプロシージャと型定義を追加する必要があります。これは、SQL Developerツールを使用して開発環境で既に行っており、パッケージで直接作業しています。 しかし、それを次の環境に渡すために、私はSQLスクリプトを提供して、自分の変更をテスト環境に追加する必要があります。

これを行うために私が見つけた唯一の方法は、変更を加えるだけでなく、すべてのパッケージ情報をCREATE OR REPLACEするSQLスクリプトを作成することです。そして、私がこの展開を行っている環境は、開発環境のコピーではないことに恐れています。

助けが必要ですか?

答えて

8

テスト環境のパッケージコードが開発環境のコードと同期していない場合は、実際にに対処する必要があります。のコードを開発する前に作業を開始してください。つまり、パッケージの開発版がtestと一致していることを確認したい場合は、、次にを変更します。

CREATE OR REPLACE PACKAGEはスクリプトを書く方法ですが、パッケージ仕様とパッケージ本体の両方でこれを行う必要があるので、2つのコマンドが必要になります。

すでに開発環境を変更しており、開発で使用したバージョンがテストと一致するかどうかわからないため、DBAがテストからパッケージ仕様書のコピーを提供できるかどうかを確認してくださいあなたは違いを見つけるために開発対テストのためにコード上でdiffを実行することができます。テストするコードを宣伝する前に、開発バージョンに差異を同期させる必要があります。私は、グラフィカルな差分操作のために好き

一つの便利なツールはdiffmergeあり、そしてあなたはそれをここに見つけることができます:http://www.sourcegear.com/diffmerge/

+4

+1私は、それが2012年であり、他のアプリケーションコードとまったく同じデータベーススクリプトにソース管理と構成管理の手順を適用する必要があることに気づいていません。 – APC

+0

他の何よりも前に同期に対処する必要があるため+1。これがなければ、新しい機能は開発環境では動作しますが、実稼働環境では機能しない可能性があり、時間が無駄になります。 –

2

あなたは、all_sourceからIEを両方の環境のコードを見つけることができます。

Select text 
from all_source 
where owner = '<the owner of the package>' 
and type = 'PACKAGE BODY' 
and name = '<the package name>'; 

それを比較して必要な変更を加えることができます。

+0

ありがとう、これは非常に便利です! :) – Omniausente

関連する問題