129.Oracle数据库SQL开发之 数据库对象——其他有用的对象函数
1. IS OF函数
欢迎转载,转载请标明出处:http://blog.csdn.net/notbaron/article/details/50087103
IS OF可以检查一个对象是否为某种特定的类型或子类型。
如下:
object_user2@PDB1> select value(o) fromobject_business_customers o where value(o) is of (t_business_person);
VALUE(O)(ID, FIRST_NAME, LAST_NAME, DOB,PHONE, ADDRESS(STREET, CITY, STATE, ZIP), TITLE, COMPANY)
----------------------------------------------------------------------------------------------------
T_BUSINESS_PERSON(1, 'John', 'Brown','01-FEB-55', '800-555-1211', T_ADDRESS('2 State Street', 'Bean
town', 'MA', '12345'), 'Manager', 'XYZCorp')
也可以将ONLY关键字与IS OF联合起来使用,只检查某种特定类型的对象。
例如下:
object_user2@PDB1> select value(o) fromobject_customers o where value(o) is of (only t_person);
VALUE(O)(ID, FIRST_NAME, LAST_NAME, DOB,PHONE, ADDRESS(STREET, CITY, STATE, ZIP))
----------------------------------------------------------------------------------------------------
T_PERSON(1, 'Jason', 'Bond', '03-APR-65','800-555-1212', T_ADDRESS('21 New Street', 'Anytown', 'CA'
, '12345'))
2. TREAT函数
TREAT函数在运行时检查是否可将一个子类型的对象视为超类型的对象,如果可以,则TREAT返回一个对象;如果不可以,则TREAT返回NULL。
object_user2@PDB1> select nvl2(treat(value(o) ast_person),'yes','no') from object_customers o
wherefirst_name='Steve' and last_name='Edwards';
NVL
---
yes
3. SYS_TYPEID
使用SYS_TYPEID可以得到一个对象类型的ID。
object_user2@PDB1>select first_name,last_name,sys_typeid(value(o)) from object_business_customerso;
FIRST_NAMELAST_NAME SY
-------------------- --
John Brown 02
通过user_types视图可以得到用户定义的类型的详细信息。