出力を読みやすくする必要があります。私が直接書くクエリについては、そうすることに成功しました。
カーソルを含むクエリに対しても同じことを行う必要があります。具体的には、カーソルによって返されるレコードもフォーマットする必要があります。しかし、私にはできません。
代わりに、列名を明示的に出力し、レコードを出力します。まだ同じ。ヘッダーも取得し、その長さに基づいて、受信したレコードもフォーマットする方法はありますか?
私があなたを正しく理解していれば、必要なのは動的解析と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;