在Oracle中,有沒有一種方法可以選擇從具有別名的自定義查詢返回的所有列?舉個例子,假設我們有一個查詢,如下所示:從自定義子查詢中選擇列名稱/別名列表
SELECT FIRST_NAME AS COL1, LAST_NAME AS COL2, ADDRESS AS COL3
FROM PEOPLE
我想知道,如果封裝查詢可以進行,將返回:
COL1
COL2
COL3
在Oracle中,有沒有一種方法可以選擇從具有別名的自定義查詢返回的所有列?舉個例子,假設我們有一個查詢,如下所示:從自定義子查詢中選擇列名稱/別名列表
SELECT FIRST_NAME AS COL1, LAST_NAME AS COL2, ADDRESS AS COL3
FROM PEOPLE
我想知道,如果封裝查詢可以進行,將返回:
COL1
COL2
COL3
這裏是如何做到這一點在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;
謝謝!這正是我正在尋找的。 – Mackers
沒問題。它很有趣,因爲我只需要使用DBMS_SQL包來獲取項目的查詢列數據。好時機! – OldProgrammer
'SELECT * FROM(你的子查詢)'會做到這一點。 –
我相信會返回類似於: def col1 col2 col3 end John Smith 123 ABC st。 Jane Doe 987 XYZ Rd。 – Mackers
你的意思是你只想從查詢中得到別名列名,而不是實際結果? – OldProgrammer