【问题标题】:Select List of Column Names / Aliases from Custom Sub-Query从自定义子查询中选择列名/别名列表
【发布时间】:2013-06-19 18:43:26
【问题描述】:

在 Oracle 中,有没有一种方法可以选择使用别名的自定义查询返回的所有列?例如,假设我们有如下查询:

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

我想知道是否可以进行封装查询并返回:

    COL1
    COL2
    COL3

【问题讨论】:

  • SELECT * FROM (your subquery) 会这样做。
  • 我相信这会返回类似:def Col1 Col2 Col3 end John Smith 123 ABC st。 Jane Doe 987 XYZ Rd.
  • 你的意思是你只想要查询中的别名列名,而不是实际结果?
  • 没错;我只想要别名

标签: oracle list format subquery alias


【解决方案1】:

以下是如何在 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;

【讨论】:

  • 谢谢!这正是我正在寻找的。​​span>
  • 没问题。这很有趣,因为我只需要使用 DBMS_SQL 包来获取项目的查询列数据。好时机!
猜你喜欢
  • 2020-06-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-07
  • 2011-04-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多