0

このコード ブロックをプロシージャで実行しようとしています。

DECLARE sharedpool FLOAT;
BEGIN
select bytes/1024/1024 into sharedpool from v$sgastat where pool='shared pool' and name like '%free memory';
insert into tempstats1(stat,cdate) values(sharedpool,sysdate);
commit;
END;

このように実行すると、正常に実行され、テーブルが更新されます。このブロックをプロシージャに追加し、ジョブをスケジュールして定期的に実行したいと考えています。

CREATE OR REPLACE PROCEDURE temp_insert1 IS
DECLARE sharedpool FLOAT;
BEGIN
select bytes/1024/1024 into sharedpool from v$sgastat where pool='shared pool' and name like '%free memory';
insert into tempstats1(stat,cdate) values(sharedpool,sysdate);
commit;
END;

これを実行すると、プロシージャがコンパイル エラーで作成されたという警告が表示されます。正しくコンパイルされないのはなぜですか?どこが間違っているのか誰か説明してもらえますか?

4

1 に答える 1