2013-06-19 56 views
2

在Oracle中,有没有一种方法可以选择从具有别名的自定义查询返回的所有列?举个例子,假设我们有一个查询,如下所示:从自定义子查询中选择列名称/别名列表

SELECT FIRST_NAME AS COL1, LAST_NAME AS COL2, ADDRESS AS COL3 
    FROM PEOPLE 

我想知道,如果封装查询可以进行,将返回:

COL1 
    COL2 
    COL3 
+0

'SELECT * FROM(你的子查询)'会做到这一点。 –

+0

我相信会返回类似于: def col1 col2 col3 end John Smith 123 ABC st。 Jane Doe 987 XYZ Rd。 – Mackers

+0

你的意思是你只想从查询中得到别名列名,而不是实际结果? – OldProgrammer

回答

4

这里是如何做到这一点在PL/SQL中。不知道是否只有直接的oracle SQL才有可能。如有需要,您可以将其封装在某种功能中。

DECLARE 
    TYPE RefCursor_Type IS REF CURSOR; 

    D_RefCur    RefCursor_Type; 
    D_DescriptionTable DBMS_SQL.DESC_TAB2; 
    D_ColumnCount  INTEGER; 
    D_CursorHandle  INTEGER; 
BEGIN 
    OPEN D_RefCur 
    FOR 'SELECT FIRST_NAME AS COL1, LAST_NAME AS COL2, ADDRESS AS COL3 FROM PEOPLE'; 

    D_CursorHandle := DBMS_SQL.to_cursor_number (D_RefCur); 

    DBMS_SQL.DESCRIBE_COLUMNS2 (D_CursorHandle, 
           D_ColumnCount, 
           D_DescriptionTable); 


    FOR idx IN 1 .. D_ColumnCount 
    LOOP 
     DBMS_OUTPUT.put_line (D_DescriptionTable (idx).col_name); 
    END LOOP; 
END; 
+0

谢谢!这正是我正在寻找的。 – Mackers

+0

没问题。它很有趣,因为我只需要使用DBMS_SQL包来获取项目的查询列数据。好时机! – OldProgrammer