2017-01-19 122 views
-1

我試圖執行此查詢;SQL錯誤00905. 00000 - 「missing keyword」

Grant SELECT on TYPE PPZ_C.BTS_BAUTEIL_STATION_INFO to PPZ_W; 

,我得到了如下因素的錯誤:

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

這意味着你不能對任何type授予select。只有EXECUTE,DEBUG和UNDER權限對類型有效。

所以,你可以使用EXECUTE,當你希望它在SELECT語句中:

Grant EXECUTE on PPZ_C.BTS_BAUTEIL_STATION_INFO to PPZ_W; 

編輯: 你的SELECT語句應該是:

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

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

+0

我應該使用哪一種EXECUTE,DEBUG和UNDER? –

1

當Oracle收到類型信息請求時,它會驗證在提供所請求的信息之前,請求者對該類型具有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 –