Oracle オブジェクト タイプの使用に関して少し問題が発生しています。メンバー関数のコンパイルでエラーが発生しました。
タイプは次のとおりです。
CREATE OR REPLACE TYPE t_Customer as OBJECT
(custID NUMBER
,fname varchar2(50)
,lname varchar2(50)
,MEMBER FUNCTION getHighest RETURN INTEGER
);
CREATE OR REPLACE TYPE t_Order AS OBJECT
(OrderID NUMBER, custID REF t_Customer, quantity INTEGER);
CREATE TABLE Order_Tbl of t_Order;
CREATE TABLE Customer_Tbl of t_Customer;
CREATE OR REPLACE TYPE BODY t_Customer AS
MEMBER FUNCTION getHighest RETURN INTEGER IS
v_max integer;
BEGIN
SELECT Max(Order.quantity) INTO v_max FROM Order WHERE Order.CustID = self.custID;
return v_max;
end;
SELECT INTO が機能しません。無効な識別子があると言っています。顧客の最高数量注文を返すメンバ関数を書きたい場合、Order テーブルをクエリする必要がありますか?それともオブジェクト参照を使用できますか? また、無駄にビューを作成しようとしました。
これは私が単純化できる最も簡単な方法です。他の方法もいくつか書く必要がありますがSELECT INTO
、今のところ作業する必要がある方法はありません。
エラーはSELF.custid INVALID IDENTIFIER
あり、Component 'custid' must be declared.
ありがとう
編集:SELECT INTO
オブジェクト型とそのビューにアクセスするための pl/sql クエリは、エイリアスを設定する必要があります。エイリアスを追加した後、私の問題は解決しました。助けてくれてありがとう - 私は解決策といくつかの例を投稿しました.