0
我需要使輸出可讀。對於我直接編寫的查詢,我成功地這樣做了。格式SQL輸出
我需要對涉及遊標的查詢做同樣的事情,也就是說,我需要將遊標返回的記錄格式化。但我無法做到。
我反而明確地打印列名,並打印記錄。還是一樣。有什麼辦法,我也可以檢索標題,然後根據它們的長度,格式化收到的記錄?
我需要使輸出可讀。對於我直接編寫的查詢,我成功地這樣做了。格式SQL輸出
我需要對涉及遊標的查詢做同樣的事情,也就是說,我需要將遊標返回的記錄格式化。但我無法做到。
我反而明確地打印列名,並打印記錄。還是一樣。有什麼辦法,我也可以檢索標題,然後根據它們的長度,格式化收到的記錄?
如果我理解正確,您需要的是動態分析和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;
你可以把光標的結果放到臨時表中,然後查詢那個臨時表達到你想要的格式嗎? – DOK 2012-04-15 16:12:16
如果你有一個遊標,你肯定知道列名是什麼,然後再選擇它們? – Ben 2012-04-15 16:16:43
@本人想要隱式打印。 – user980411 2012-04-16 01:29:21