全部产品

引用对象类型属性和方法

更新时间:2020-03-26 11:38:48

要在 SQL 语句中引用对象类型属性或方法,必须使用表别名完全限定该引用。以下示例中样本 Schema ob 包含类 cust_address_typ 和表 customerscustomers 拥有一个 cust_address_typ 类型的列 cust_address

  1. CREATE TYPE cust_address_typ
  2. OID '82A4AF6A4CD1656DE034080020E0EE3D'
  3. AS OBJECT
  4. (street_address VARCHAR2(40),
  5. postal_code VARCHAR2(10),
  6. city VARCHAR2(30),
  7. state_province VARCHAR2(10),
  8. country_id CHAR(2));
  9. /
  10. CREATE TABLE customers
  11. (customer_id NUMBER(6),
  12. cust_first_name VARCHAR2(20) CONSTRAINT cust_fname_nn NOT NULL,
  13. cust_last_name VARCHAR2(20) CONSTRAINT cust_lname_nn NOT NULL,
  14. cust_address cust_address_typ,
  15. . . .

在 SQL 语句中,对 postal_code 属性的引用必须使用表别名进行完全限定,如下所示:

  1. SELECT c.cust_address.postal_code
  2. FROM customers c;
  3. UPDATE customers c
  4. SET c.cust_address.postal_code = '610000'
  5. WHERE c.cust_address.city = 'chengdu'
  6. AND c.cust_address.state_province = 'SICHUAN';

要引用不接受参数的成员方法,必须提供空括号。例如,样本 Schema ob 包含一个基于 catalog_typ 的对象表 category_tab,该表包含成员函数 getCatalogName。为了在 SQL 语句中调用此方法,必须提供空括号,如下所示:

  1. SELECT TREAT(VALUE(c) AS catalog_typ).getCatalogName() "Catalog Type"
  2. FROM categories_tab c
  3. WHERE category_id = 10;

返回结果:

  1. +----------------+
  2. | Catalog Type |
  3. +----------------+
  4. | online catalog |
  5. +----------------+