当前位置: 代码迷 >> Oracle技术 >> 不建表,获取select查询的字段,该怎么解决
  详细解决方案

不建表,获取select查询的字段,该怎么解决

热度:19   发布时间:2016-04-24 08:35:28.0
不建表,获取select查询的字段
我这边有这样的一个需求,在不建立表的情况下,获取到select column中的column名称,如

select t.column1,t.column2,t.column3 from test

我要获取的是column1,column2,column3这几个字段的名称


请教各位数据库专家,谢谢哈

------解决方案--------------------
不建表,你的test表从那儿来?
ORACLE数据字典那来你的表结构定义?
------解决方案--------------------
SQL code
SQL> desc emp;Name     Type         Nullable Default Comments -------- ------------ -------- ------- -------- EMPNO    NUMBER(4)                              ENAME    VARCHAR2(10) Y                         JOB      VARCHAR2(9)  Y                         MGR      NUMBER(4)    Y                         HIREDATE DATE         Y                         SAL      NUMBER(7,2)  Y                         COMM     NUMBER(7,2)  Y                         DEPTNO   NUMBER(2)    Y                          --构造一个表,和emp表的部分字段相同,但是顺序不同SQL> create table t_emp as  2  select ename,empno,deptno,sal  3  from emp  4  where 1=0  5  / Table created --添加数据SQL> insert into t_emp(ename,empno,deptno,sal)  2  select ename,empno,deptno,sal  3  from emp  4  where sal >= 2500   5  / 5 rows inserted SQL> select * from t_emp; ENAME      EMPNO DEPTNO       SAL---------- ----- ------ ---------JONES       7566     20   2975.00BLAKE       7698     30   2850.00SCOTT       7788     20   3100.00KING        7839     10   5000.00FORD        7902     20   3000.00 SQL> select * from emp; EMPNO ENAME      JOB         MGR HIREDATE          SAL      COMM DEPTNO----- ---------- --------- ----- ----------- --------- --------- ------ 7369 SMITH      CLERK      7902 1980-12-17     800.00               20 7499 ALLEN      SALESMAN   7698 1981-02-20    1600.00    300.00     30 7521 WARD       SALESMAN   7698 1981-02-22    1250.00    500.00     30 7566 JONES      MANAGER    7839 1981-04-02    2975.00               20 7654 MARTIN     SALESMAN   7698 1981-09-28    1250.00   1400.00     30 7698 BLAKE      MANAGER    7839 1981-05-01    2850.00               30 7782 CLARK      MANAGER    7839 1981-06-09    2450.00               10 7788 SCOTT      ANALYST    7566 1987-04-19    3100.00               20 7839 KING       PRESIDENT       1981-11-17    5000.00               10 7844 TURNER     SALESMAN   7698 1981-09-08    1500.00      0.00     30 7876 ADAMS      CLERK      7788 1987-05-23    1100.00               20 7900 JAMES      CLERK      7698 1981-12-03     950.00               30 7902 FORD       ANALYST    7566 1981-12-03    3000.00               20 7934 MILLER     CLERK      7782 1982-01-23    1300.00               10 14 rows selected
------解决方案--------------------
你的tablexxx 与test表字段名称一致?
------解决方案--------------------
不建表怎么有test。
------解决方案--------------------
可是select过来的字段可能是这样子
select t.column2,t.column1,t.column3 from test

如果能确定这个sql的格式没有大的变化 你可以截取啊 把select和from中间的部分取出来 再把表名.列名中.前边的去掉 列名就出来了
------解决方案--------------------
说了半天你是想说,要查询中获取字段的名字。
------解决方案--------------------
select '' column1, '' column2, '' column3 from dual
------解决方案--------------------
desc cat;
/*或者:*/
desc tab;

TNAME是表名。

  相关解决方案