在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