私は、次のコマンドを使用して、Oracleオブジェクトの内部でnumber(7,0)
属性を変更しようとしている:Oracle Alter Object?
alter type myObjectFormat
modify ATTRIBUTE (
A NUMBER(7,2)) CASCADE FORCE;
ERROR:
Error report -
SQL Error: ORA-06545: PL/SQL: compilation error - compilation aborted
ORA-06550: line 10, column 32:
PLS-00103: Encountered the symbol "end-of-file" when expecting one of the following:
exceptions
ORA-06550: line 0, column 0:
PLS-00565: MYOBJECTFORMAT must be completed as a potential REF target (object type)
06545. 00000 - "PL/SQL: compilation error - compilation aborted"
*Cause: A pl/sql compilation error occurred and the compilation was
aborted completely without the compilation unit being written
out to the backing store. Unlike ora-06541, the user will always
see this error along with the accompaning PLS-nnnnn error messages.
*Action: See accompanying PLS-nnnnn error messages.
を次のように私のオブジェクトは次のとおりです。
create or replace type myObjectFormat
as object (
A number(7,0)
);
関数を使用して(明らかにエラーを再現する例):
CREATE OR REPLACE FUNCTION STACKOVERFLOW RETURN MYOBJECTFORMAT AS
BEGIN
RETURN NULL;
END STACKOVERFLOW;
オブジェクトのデータ型を手動で変更しようとしましたが、エラーError(1,1): ORA-02303: can't drop or replace a type with type or table dependents. SQLDev advises setting "Drop Type Force" preference
エラーメッセージが表示されます。この時点で行う簡単なことは、このオブジェクトを使用して関数を削除し、変更を加えてから、関数を再作成することです。このデータベースが成長するにつれて、「簡単な」方法は実現可能ではありません。
のOracle参照:
私は、ALTER TYPE文を使用して、ちょうど私の構文がオフになっているかどうかを知ることを好むでしょうか?私のFORCE
コマンドが間違った場所にあるようです。
したがって、エラーはまだ存在します...技術的に "エラー"が残っている場合、関数はこの変更をどのように受け入れますか?また、私は 'DBMS_UTILITY.CREATE_ALTER_TYPE_ERROR_TABLE'で未知の海域に飛び込んでいます。これを送信するスキーマとテーブルを定義する必要がありますか?どんな例? – TriHard8