当前位置: 首页 > 面试题库 >

PL / SQL-从查询中获取列名

韩耘豪
2023-03-14
问题内容

我在Oracle数据库11g中使用Pl / SQL。

我正在编写一个将select语句作为参数(varchar2)的函数。该函数使用for循环遍历行并将格式应用于特定的列,并输出整个内容。基本上,我需要某种方式来获取列名,以便可以在顶部显示它们。我知道有多种方法可以对表执行此操作,但是由于传入了此查询,因此可能未选择所有列,可能已使用别名等。

有没有一种方法可以从此查询中选择列名?
理想情况是:
select column_names from (subquery)


问题答案:

我相信您可以使用DESCRIBE_COLUMNS来做到这一点。只需传入光标和其他必需的参数即可。

http://docs.oracle.com/cd/B19306_01/appdev.102/b14258/d_sql.htm#i1026120

declare
    v_sql varchar2(32767) := 'select 1 column1, 2 column2 from dual';
    v_cursor_id integer;
    v_col_cnt integer;
    v_columns dbms_sql.desc_tab;
begin
    v_cursor_id := dbms_sql.open_cursor;
    dbms_sql.parse(v_cursor_id, v_sql, dbms_sql.native);
    dbms_sql.describe_columns(v_cursor_id, v_col_cnt, v_columns);

    for i in 1 .. v_columns.count loop
        dbms_output.put_line(v_columns(i).col_name);
    end loop;

    dbms_sql.close_cursor(v_cursor_id);
exception when others then
    dbms_sql.close_cursor(v_cursor_id);
    raise;
end;
/

Output:
COLUMN1
COLUMN2


 类似资料:
  • 问题内容: 我有一个自定义查询,我需要知道如何从中提取列名。我已经在寻找任何方法来做到这一点: 正则表达式:我已经构建了这个程序,以或多或少地获得我想要的东西,但是它不起作用(我使用的是Toad 12.6.0.53)。 这是我尝试测试我的正则表达式的代码: 但是最后,v_Result为空。 另一种方法是在我的表列之间循环,正如我在这里所看到的,但我认为情况并非如此。 因此,我想知道是否还有其他方法

  • 问题内容: 我在Python列表中有一堆列名。现在,我需要将该列表用作语句中的列名称。我怎样才能做到这一点? 到目前为止,我有: 问题答案: 您无法传递要选择作为参数的列列表。它应该是您的SQL表达式的一部分,例如: 要注意的一件事是,SQL中参数值的占位符取决于数据库。如果不起作用,请尝试使用或。有关更多详细信息,请参见https://www.python.org/dev/peps/pep-02

  • 问题内容: 我不是要命令。 我想创建一个与heidisql类似的应用程序,您可以在其中指定SQL查询,并在执行时返回包含代表查询结果的行和列的结果集。结果集中的列名称应与您在SQL查询中定义的所选列匹配。 在我的Python程序中(使用),我的查询仅返回行和列的结果,而不返回列的名称。在下面的例子中,列名应为,和。SQL最终将在程序外部。 我能想到的唯一方法是编写自己的SQL解析器逻辑以提取选定的

  • 问题内容: 我需要从Hibernate查询中获取字符串,并稍后进行处理(因此无法使用来解决)。 我已经看过如何从HibernateCriteriaAPI(并非用于记录日志)中获取SQL,但是有了这种解决方法,我得到了SQL查询字符串,但是没有显示它显示’?’的参数值,有没有办法获得带有参数值的完整SQL字符串? 我的意思是,有了这种解决方案,我可以得到,但我需要得到… 有想法吗? 问题答案: 有一

  • 问题内容: 我的Web应用程序中有一个管理控制台,允许管理员在数据库上执行自定义SQL SELECT查询。 在下面,该应用程序正在使用Hibernate,但是这些查询不是HQL,它们是纯SQL,因此我使用的是本机查询,如下所示: 这可以正常工作,但是它只返回数据行,没有额外的信息。我还想获取列名,因此当我将结果打印回用户时,我还可以打印标题以显示各个列。 有什么办法吗? 问题答案: 经过很长一段时

  • 问题内容: 我想从NTEXT列中获取一个xml节点值,该列包含基于在另一个xml节点值上查询的where子句的xml。 RDBMS类型:Microsoft SQL Server T-SQL 这里:我想基于StoreId where子句值获取Code节点值。我如何得到它?输入:100输出:ABCDE 例如: 问题答案: 如果您使用的是SQL Server 2005或2008,则可以使用XQuery,