Oracle对象:如何显示选择查询中的所有字段?

时间:2019-01-08 10:57:29

标签: sql oracle

我有以下Oracle对象:

Complete basic operations using SharePoint REST endpoints

和一张桌子:

CREATE TYPE person_typ AS OBJECT (
  Id NUMBER,
  first_name     VARCHAR2(20),
  last_name      VARCHAR2(25));

我想进行选择查询以显示Person_Typ对象的所有字段,而无需指定其名称。

当我这样做

CREATE TABLE MyTable (
  contact         person_typ,
  contact_date    DATE );

列联系人显示为 [不支持的数据类型] ,我必须改用:

select * from MyTable

还有另一种无需指定列名即可显示对象值的方法吗?

谢谢, 干杯,

2 个答案:

答案 0 :(得分:0)

我遇到了同样的问题,并且创建了包含所有字段的视图。就您而言:

CREATE VIEW v_myTable AS 
   select T.contact.ID, T.contact.First_name, T.contact.last_name  
   from MyTable T

并使用视图而不是表格

SELECT * from v_myTable 

答案 1 :(得分:0)

我不使用SQL Developer,但是根据本文Showing TYPE’d Column Values in SQL Developer,您可以使用选项:

首选项/数据库/高级/在网格中显示结构值

您还可以查询user_type_attr(或all_type_attr)以获得列名。然后从输出中复制/粘贴select部分,然后运行它或按照@sep的建议创建视图。这是我的测试数据和代码块:

insert into mytable values (person_typ(1, 'Paulina', 'Thomson'), date '2017-12-17');
insert into mytable values (person_typ(7, 'Keanu', 'Stevens'), date '2017-12-28');

declare 
  v_sql varchar2(32000);
begin
  select listagg('T.CONTACT.'||attr_name||' '||attr_name, ', ') 
         within group (order by attr_no) 
    into v_sql
    from user_type_attrs 
    where type_name = 'PERSON_TYP';

  v_sql := 'SELECT '||v_sql||' FROM MYTABLE T';
  dbms_output.put_line(v_sql);
  execute immediate 'CREATE OR REPLACE VIEW VW_CONTACTS AS '||v_sql;
end;

select * from vw_contacts;

结果:

    ID FIRST_NAME           LAST_NAME
------ -------------------- -------------------------
     1 Paulina              Thomson
     7 Keanu                Stevens