Я новичок в базе данных Oracle 11g R2, это для получения информации о табличном пространстве базы данных. Я бегу следующий код вроде .sql
:Вызов таблицы dba по хранимой процедуре
select TABLESPACE_NAME,
INITIAL_EXTENT,
NEXT_EXTENT,
MIN_EXTENTS,
MAX_EXTENTS,
PCT_INCREASE,
STATUS,
CONTENTS
from dba_tablespaces
order by TABLESPACE_NAME ;
и работает нормально, но когда я пытаюсь его запустить в хранимой процедуре:
CREATE OR REPLACE PROCEDURE TABLE_SPACE_INFO AS
BEGIN
select TABLESPACE_NAME,
INITIAL_EXTENT,
NEXT_EXTENT,
MIN_EXTENTS,
MAX_EXTENTS,
PCT_INCREASE,
STATUS,
CONTENTS
from dba_tablespaces
order by TABLESPACE_NAME ;
END TABLE_SPACE_INFO;
я получил ошибку компиляции:
Error(3,3): PL/SQL: SQL Statement ignored
Error(11,7): PL/SQL: ORA-00942: table or view does not exist
Какое решение и почему его неправильно?
возможно дубликат [Oracle 9i: Synonymed таблица не существует] (http://stackoverflow.com/ вопросы/379672/oracle-9i-синонимированный-table-does-not-exist) –
Это не одно и то же. Здесь речь идет о предоставлении роли, которая работает при запуске SQL напрямую, но жалуется при использовании внутри хранимого кода PL/SQL. – igr