其实很简单自定义结构 type1 (Code varchar2(10), Name varchar2(20))
表Tab1 有字段 F1 Type1,F2 varchar2(20)
可以这样写 Select * From Tab1但是我想显示 F1.Code,F2 如何写 Select F1.Code,F2  From Tab1 是错误的谁知道什么实现我的查询?
----别告诉我把表设计成3个字段 Code varchar2(10), Name varchar2(20),F2)

解决方案 »

  1.   

    select p.f1.code,p.f2 from tab1 p;
      

  2.   

    to  njhart2003
    还是有点问题,如果 type1 ("code" varchar2(10), "name" varchar2(20))这样select p.f1.code,p.f2 from tab1 p;就会报错
    select p.f1."code",p.f2 from tab1 p;也会报错
      

  3.   

    在我机子上试没有问题。环境:windows 2000 server + Oracle 8.1.7过程如下:
    SQL> CREATE OR REPLACE TYPE TYPE1
      2  AS OBJECT("code"  varchar2(10),"name"  varchar2(20));
      3  /类型已创建。SQL> CREATE TABLE TAB1(
      2  F1     TYPE1,
      3  F2     VARCHAR2(10)
      4  );表已创建。SQL> BEGIN
      2  INSERT INTO TAB1 VALUES(TYPE1('CODE1','NAME1'),'V1');
      3  INSERT INTO TAB1 VALUES(TYPE1('CODE2','NAME2'),'V2');
      4  INSERT INTO TAB1 VALUES(TYPE1('CODE3','NAME3'),'V3');
      5  COMMIT;
      6  END;
      7  /PL/SQL 过程已成功完成。SQL> SELECT P.F1."code", P.F2 FROM TAB1 P;F1.code    F2
    ---------- ----------
    CODE1      V1
    CODE2      V2
    CODE3      V3已选择3行。
      

  4.   

    >select p.f1."code",p.f2 from tab1 p;也会报错是不是应该这样:
    select p.f1."Code",p.f2 from tab1 p; -- 是"Code",不是"code"