私はOracle 10gデータベースにストアドプロシージャを作成しようとしました。これは、データを選択dba_segmentsして別のテーブルに挿入します(つまり、table_space)。
作成または置換
手順 P_DAILY_ENTRY
は
an_job_id 番号;
始める
INSERT INTO table_space(table_name, max_size, date_of_max_size)
テーブル名を選択し、
TRUNC(SUM(バイト)/1024) max_size,
sysdate date_of_max_size
から
(
SELECT セグメント名 テーブル名、所有者、バイト
FROM dba_segments
WHERE セグメント タイプ = 'テーブル'
ユニオンオール
SELECT セグメント名 テーブル名、所有者、バイト
FROM dba_segments
WHERE セグメント タイプ = 'INDEX'
)
WHERE 所有者 ('CARAT')
GROUP BY table_name、所有者
ORDER BY SUM(bytes) DESC;
その他の場合の例外
ロールバック;
END P_DAILY_ENTRY;
上記を実行すると、次の2つのエラーが表示されます。
- ライン05 | 実行 | PL/SQL: SQL文は無視されました
- 12行目 | 実行 | PL/SQL: ORA00942: テーブルまたはビューが存在しません
ただし、INSERTステートメントを個別に実行すると、table_spaceテーブルにデータが入力されます。