0

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

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

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

4

1 回答 1

4

如果我理解正确,您需要的是动态解析和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;
于 2012-04-15T16:23:46.057 回答