我在使用 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 查询必须是别名。添加别名后,我的问题就解决了。不过感谢您的帮助-我发布了解决方案和几个示例。