2011-06-30 1 views
5

Oracleのテーブル定義(DDL)とPL/SQLスクリプトのいずれかで問題が発生しました。物理DDLの変更とPL/SQLの変更の結合/依存性を最小限に抑える方法は?

問題があり、テーブルの変更は、この変更は、しかし、熱心ORA-06502: PL/SQL: numeric or value errorエラーの原因となって、まだvarchar(20)たデータを消費する私たちのPL/SQLスクリプト、のいずれかに反映されていなかった、varchar(20)からvarchar(30)に変更し、そこにいました私たちの回帰テストの1つの間に。

これまでにこのようなシナリオに遭遇したか、テーブルDDLが変更されたか、PL/SQLに反映されなかったかどうか、そしてこれをどのように処理するかについて、Oracleとデータベースの専門家からアドバイスを受けたいと思いますギャップ。

私はある種の強制や書類作成が簡単な方法を知っていますが、より美しく優雅な解決方法、つまり外部キーが挿入/更新/削除の異常を回避する仕組みがあるでしょうか?

ありがとうございました!手始めに

答えて

6

、あなたは常にあなたのテーブルのカラム定義に基づいて、型として、あなたの変数を宣言する必要があります

すなわち、代わりの:

dept_name VARCHAR2(50); 

用途:

dept_name dept.dept_name%TYPE; 

あなたのベーステーブルが変わると、あなたの宣言はまだ有効です。

また、同様のタイプとしてあなたの手続きのパラメータを宣言することができます。

PROCEDURE proc(p1 IN dept.dept_name%TYPE) 
+0

1クッキーが、これは、少なくとも私にとっては、天才です。 –

+1

+1これは一般的にうまくいきます。サイズ制限があると予想される場合は、まだ注意する必要があります。 1つの例は、拡大されたデータベース列が収まらない封筒に印刷されるアドレスである。 –

+0

@Chin Boon、それは確かにPL/SQL設計チームが正しいことでした! @Gary、 – DCookie

関連する問題