Во-первых, вам необходимо удалить TYPE
. Это исправит вашу первую часть проблемы. Попробуйте
Grant SELECT on PPZ_C.BTS_BAUTEIL_STATION_INFO to PPZ_W
Теперь, когда вы выполняете выше, вы дополнительно получите ошибку:
ORA-02305: only EXECUTE, DEBUG, and UNDER privileges are valid for types
означает, что вы не можете предоставить select
на любой type
. Для типов допустимы только привилегии EXECUTE, DEBUG и UNDER.
Таким образом, вы можете использовать EXECUTE
, когда вы хотите использовать его в операторе отбора:
Grant EXECUTE on PPZ_C.BTS_BAUTEIL_STATION_INFO to PPZ_W;
EDIT: Ваш оператор выбора должен быть:
SELECT ppz_bts.na_stat_anf(PPZ_C.BTS_BAUTEIL_STATION_INFO ('','IG','12345679')) FROM dual;
См демо:
CREATE OR REPLACE TYPE myschema.array_t is varray(2) of number ;
---Running in My schema
SQL> select * from table(array_t('1','2'));
COLUMN_VALUE
------------
1
2
--Granted from myschema to otherschema
SQL> grant execute on myschema.array_t to othersschema ;
--Running in otherschema
SQL> select * from table(myschema.array_t('1','2'));
COLUMN_VALUE
------------
1
2
Я то, что PPZ_W пользователь, чтобы иметь возможность сделать это выберите: –
ВЫБЕРИТЕ ppz_bts.na_stat_anf (bts_bauteil_station_info ('', '' IG, '12345679')) FROM dual; –
Какую из EXECUTE, DEBUG и UNDER следует использовать? –