Oracle
PL/SQL 塊執行而不列印任何輸出
我正在嘗試使用 dbms_output 執行 pl/sql 塊以獲取控制台輸出,但 SQL 開發人員的唯一答案是“匿名塊已完成”。
declare v_count integer; lines dbms_output.chararr; num_lines number; begin dbms_output.ENABLE; num_lines := 0; for r in (select table_name, owner from all_tables where owner = 'SYSAME' and table_name like 'SYZ%' and table_name not in (select distinct table_name from all_tab_columns where OWNER = 'SYSAME' and table_name like '%SYZ%' and column_name not like '%FL_IDE_FILIALE%')) loop execute immediate 'select count(*) from ' || r.table_name || ' where fl_ide_filiale = 12' into v_count; dbms_output.Put_line(r.table_name ||';'|| r.owner ||';'|| v_count ||';'|| SYSDATE ); num_lines := num_lines + 1; end loop; dbms_output.get_lines(lines, num_lines); dbms_output.Put_line(num_lines); FOR i IN 1..num_lines LOOP dbms_output.Put_line(lines(i)); END LOOP; end;
知道為什麼我沒有獲得任何輸出嗎?
**Q2:**有沒有辦法不使用字元串線和類似表格的方式繪製輸出。在這種情況下,類似於具有此值的選擇:
r.table_name, r.owner, v_count, SYSDATE
回答問題2:
在 PL-SQL 中建構匿名塊時,無法像 Sql Server 一樣顯示結果。您必須使用過程或函式來完成。ps:函式必須返回一個 sys_refcursor。
但是,嘿,我有類似的問題……我為這個案例所做的是創建一個儲存過程來傳遞一串值並使用簡單的數學和繪圖技術將其顯示為表格。(我沒有儲存過程,這是我以前的工作)
您必須
SET SERVEROUTPUT ON
在執行 PL/SQL 腳本之前執行。