データベース操作の作成

DBMS_SQL_MONITORパッケージ・サブプログラムを使用して、コンポジット・データベース操作を作成できます。

次の例では、DBOP_EXAMPLEという名前のデータベース操作を作成します。例では、データベース操作を開始します。顧客ごと、都市ごとに最大売上高を選択するPL/SQLプロシージャがあります。次に、2人以上の顧客がいる都市のすべての顧客の最大売上高を選択するSQL文があります。最後に、データベース操作を終了します。

例5-1 データベース操作の作成

VAR eid NUMBER
EXEC :eid := DBMS_SQL_MONITOR.BEGIN_OPERATION('DBOP_EXAMPLE');
declare
--
v1 number;
--
CURSOR c1 IS
SELECT cust_city
  FROM (SELECT COUNT(*) cnt, cust_city 
        FROM sh.customers GROUP BY cust_city 
        ORDER BY 1 desc);
--
BEGIN
FOR i IN c1
LOOP
--
v1 := 0;
--
SELECT MAX(amount_sold)
INTO v1
FROM sh.sales
WHERE cust_id IN (select cust_id FROM sh.customers WHERE cust_city=i.cust_city);
--
DBMS_OUTPUT.PUT_LINE('Amount: '||v1);
--
END LOOP;
--
END;
/
SELECT MAX(asld) FROM 
(SELECT MAX(amount_sold) asld, cust_id FROM sh.sales WHERE cust_id IN 
  (SELECT cust_id FROM sh.customers WHERE cust_city IN 
    (SELECT cust_city FROM
     (SELECT count(*) cnt, cust_city FROM sh.customers
      GROUP BY cust_city HAVING COUNT(*) > 1)
    ))
GROUP BY cust_id)
/
 
EXEC DBMS_SQL_MONITOR.END_OPERATION('DBOP_EXAMPLE',:eid);

ノート:

Oracle Database19c以降では、管理権限のないデータベース・ユーザーは、DBMS_SQL_MONITORパッケージ・サブプログラムを使用してコンポジット・データベース操作を作成し、Cloud Controlの「監視されたSQL実行」ページにナビゲートすることで、実行計画やパフォーマンス・メトリックを含む、それらの操作のSQL実行の詳細を表示することもできます。

参照: