我需要让我的输出可读。对于我直接写的查询,我已经成功地这样做了。
我需要对涉及游标的查询执行相同的操作,即具体而言,我还需要将游标返回的记录进行格式化。但我无能为力。
我改为明确打印列名,然后打印记录。还是一样。有什么办法,我也可以检索标题,然后根据它们的长度,格式化收到的记录吗?
答案 0 :(得分: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;