Oracle
 sql >> база данни >  >> RDS >> Oracle

В Oracle, как да проверя типа обект, използван от йерархия на обектен тип?

Можете да проверите типа на обект, като използвате sys.anydata :

create or replace function which_type
    ( p_fv fv )
    return varchar2
as
begin
    return sys.anydata.gettypename(sys.anydata.convertobject(p_fv));
end which_type;

Тест:

create or replace type number_array as table of number;
create or replace type integer_array as table of integer;

create or replace type fv as object (
   idno           number)
not final;
/

create type fv_integer under fv (
   features integer_array)
   not final;
/

create type fv_number under fv (
   features number_array)
   not final;
/

create table fv_test (my_fv fv);

insert into fv_test values (fv(1));
insert into fv_test values (fv_integer(1, integer_array(1)));
insert into fv_test values (fv_number(1, number_array(1)));

select which_type(my_fv) from fv_test;

WHICH_TYPE(MY_FV)
-------------------------
WILLIAM.FV
WILLIAM.FV_INTEGER
WILLIAM.FV_NUMBER

3 rows selected.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle вмъкване от select в таблица с повече колони

  2. присъединете се с търсене и групиране

  3. ORA-00604:възникна грешка при рекурсивен SQL ниво 1

  4. SQL Предизвикателство/Пъзел:Дадено е проследяване на стека - Как да намерите най-горния елемент във всяка точка от времето?

  5. Заобиколно решение за външно свързване с IN оператор в Oracle