我有以下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
还有另一种无需指定列名即可显示对象值的方法吗?
谢谢, 干杯,
答案 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