2017-01-19 7 views
-1

Я пытаюсь выполнить этот запрос;Ошибка SQL 00905. 00000 - «missing keyword»

Grant SELECT on TYPE PPZ_C.BTS_BAUTEIL_STATION_INFO to PPZ_W; 

и я получаю ошибку folowing:

Error starting at line : 3 in command - Grant SELECT on TYPE PPZ_C.BTS_BAUTEIL_STATION_INFO to PPZ_W Error report - ORA-00905: missing keyword 00905. 00000 - "missing keyword" *Cause:
*Action:

Кто-нибудь знает, что ключевое слово, мне не хватает?

ответ

2

Во-первых, вам необходимо удалить 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 
+0

Я то, что PPZ_W пользователь, чтобы иметь возможность сделать это выберите: –

+0

ВЫБЕРИТЕ ppz_bts.na_stat_anf (bts_bauteil_station_info ('', '' IG, '12345679')) FROM dual; –

+0

Какую из EXECUTE, DEBUG и UNDER следует использовать? –

1

Когда Oracle получает запросы на информацию типа, это verifi что у запрашивающего есть привилегия EXECUTE для типа перед подачей запрашиваемой информации. Попробуйте это:

Grant EXECUTE on PPZ_C.BTS_BAUTEIL_STATION_INFO to PPZ_W; 

Тогда попробуйте сделать:

SELECT ppz_bts.na_stat_anf(PPZ_C.bts_bauteil_station_info('','IG','12345679')) 
FROM dual; 
+0

Мне удалось выполнить этот грант, но теперь, когда я выполняю querry .. –

+0

SELECT ppz_bts.na_stat_anf (bts_bauteil_station_info ('', 'IG', '12345679')) FROM dual; –

+0

я получаю эту ошибку ORA-00904: "BTS_BAUTEIL_STATION_INFO": недопустимый идентификатор 00904. 00000 - "% S: неверный идентификатор" * Причина: * Действие: Ошибка в строке: 1 колонка: 29 –

Смежные вопросы