2

以下に示すように、SQL Plusでスクリプトを実行するとします

sql>set autotrace traceonly;
sql>select * from employees;


Execution Plan
----------------------------------------------------------
   0       SELECT STATEMENT Optimizer Mode=ALL_ROWS (Cost=2 Card=14 Bytes=1 K)
   1    0    TABLE ACCESS FULL T416493.EMPLOYEE (Cost=2 Card=14 Bytes=1 K)

Statistics
----------------------------------------------------------
      6  user calls
      0  physical read total multi block requests
      0  physical read total bytes
      0  cell physical IO interconnect bytes
      0  commit cleanout failures: block lost
      0  IMU commits
      0  IMU Flushes
      0  IMU contention
      0  IMU bind flushes
      0  IMU mbu flush
     14  rows processed

パッケージを作成しています。クエリを渡すと、この統計を含む実行計画が提供されます。これをパッケージに実装するにはどうすればよいですか?

4

1 に答える 1

1

DMBS_XPLAN の基本的なラッパーを次に示します。

CREATE OR REPLACE PROCEDURE print_plan(p_sql IN VARCHAR2)
IS
BEGIN
  EXECUTE IMMEDIATE 'explain plan for '||p_sql;

  FOR r_plan IN (SELECT * 
                 FROM table(DBMS_XPLAN.DISPLAY))
  LOOP
    dbms_output.put_line(r_plan.plan_table_output);
  END LOOP;
END;
/

BEGIN
  print_plan('select 1 from dual');
END;
/
于 2012-07-25T08:12:40.877 に答える