ネストされたテーブルにプロシージャを追加する必要があるこの宿題があります。これが構造です
create type associe_t as Object(noAs int, nomAs varchar(50), capAs int)
/
create type lesAssocies_t as TABLE OF associe_t
/
create type promoteur_t as Object(matP int, nomP varchar(50), adrP varchar(50), lesAssocies lesAssocies_t)
/
create table promoteur of promoteur_t (
constraint pk_promoteur primary key(matP));
create table promoteur of promoteur_t (
constraint pk_promoteur primary key(matP),
constraint limCapAs check (capAs <= 1 000 000)
) tableSpace TBS3202A2012
NESTED TABLE lesAssocies STORE AS Table_lesAssocies ;
associe_t
パラメータで渡された数値に基づいて、レコード内の値を更新できるタイプのメソッドが必要です。
そこで、タイプにメソッドシグネチャを追加しようとしました。
alter type associe_t add member procedure augmenteCapAs(P IN number) cascade ;
そして、私はその手順の本文を後に追加しようとしました:
CREATE or replace TYPE BODY associe_t AS
MEMBER procedure augmenteCapAs(P in number ) AS
BEGIN
update Table_lesAssocies t set t.capAs = P/100 where t.noAs = self.noAs;
END;
END;
/
テーブル名を使用するTable_lesAssocies
と、次のエラーが発生します。
ORA-22812: cannot reference nested table column's storage table
また、テーブル名を使用するlesAssocies_t
と、テーブルが存在しないことがわかります。
私は何が間違っているのですか?そのテーブルの物理的な名前を使用するべきではないと確信しています(Table_lesAssocies
)
どのテーブル名を使用する必要がありますか?