在 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;
关于oracle - 从自定义子查询中选择列名称/别名列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17198923/