我创建了一个SQL对象:

create type foo_type as object (
        bar integer(2),
        bar2  varchar(200),

        member function get return integer
)

我实现了我的类型的 body :
CREATE TYPE BODY foo_type as
member function get return integer is
begin
   return bar;
END;
END;

然后,我创建了这种类型的表:
CREATE TABLE test_table(
    foo1 foo_type
)

我插入了一行:
INSERT INTO test_table (foo1) VALUES (foo_type(1, 'a'))

我希望可以这样调用:
SELECT foo1.get() FROM test_table

但这是行不通的。

最佳答案

引用类型方法/属性时,必须使用别名。

例如,将表别名为t:

SQL> INSERT INTO test_table (foo1) VALUES (foo_type(1, 'a'));

1 row created.

SQL> select t.foo1.get() from test_table t;

T.FOO1.GET()
------------
           1

关于oracle - oracle如何调用自己的类型成员函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14954688/

10-12 18:07