【问题标题】:Format SQL Output格式化 SQL 输出
【发布时间】:2012-04-15 16:06:51
【问题描述】:

我需要使我的输出可读。对于我直接编写的查询,我已经成功地做到了。

  1. 我需要对涉及游标的查询执行相同的操作,也就是说,我还需要对游标返回的记录进行格式化。但我做不到。

  2. 我改为显式打印列名,然后打印记录。还是一样。有什么办法,我也可以检索标题,然后根据它们的长度,格式化接收到的记录吗?

【问题讨论】:

  • 你能不能把游标的结果放到一个临时表中,然后查询那个临时表来实现你想要的格式?
  • 如果你有一个游标,你在选择它们之前肯定知道列名是什么?
  • @Ben 我希望它被隐式打印出来。

标签: sql oracle select plsql cursor


【解决方案1】:

如果我理解正确,您需要的是动态解析和lpad-rpad 函数。

使用DBMS_SQL 包,您可以动态解析SQL 语句。我把下面的代码块扔在了头上,所以可能会有语法错误,但它应该会给你这个想法。

declare
  ln_cur number;
  ln_colCnt number;
  l_sqlDesc DBMS_SQL.DESC_TAB;
begin
  ln_cur := DBMS_SQL.open_cursor;
  DBMS_SQL.parse(ln_cur, 'select * from dual', DBMS_SQL.NATIVE);

  DBMS_SQL.describe_columns(ln_cur, ln_colCnt, l_sqlDesc);
  DBMS_OUTPUT.put_line(l_sqlDesc(1).col_name); --First Column Name.

  DBMS_SQL.close_cursor(ln_cur);
end;

如果要格式化输出,还需要检查 lpad-rpad 函数。试试这个,自己看看:

begin
    DBMS_OUTPUT.put_line(lpad(20, "Ford"));
    DBMS_OUTPUT.put_line(lpad(20, "Prefect"));
end;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-22
    相关资源
    最近更新 更多