5

Oracle テーブル定義 (DDL) と PL/SQL スクリプトの 1 つで特定の問題に遭遇しました。

問題は、テーブルに変更があり、 から に変更されたvarchar(20)ことvarchar(30)です。ただし、この変更はデータを消費する PL/SQL スクリプトの 1 つに反映されていませんでしvarchar(20)ORA-06502: PL/SQL: numeric or value error

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

簡単な方法の 1 つは、なんらかの強制または事務処理であることは知っていますが、より美しく洗練された解決策、つまり挿入/更新/削除の異常を回避するために外部キーが機能する方法はありますか?

ありがとう!

4

1 に答える 1

6

まず、テーブルの列定義に基づいて、常に変数を TYPE として宣言する必要があります。

つまり、代わりに:

dept_name  VARCHAR2(50);

使用する:

dept_name  dept.dept_name%TYPE;

そうすれば、ベース テーブルが変更されても、宣言は引き続き有効です。

手続き型パラメーターを型として宣言することもできます。

PROCEDURE proc(p1 IN dept.dept_name%TYPE)
于 2011-06-30T03:55:51.783 に答える