Domanda

Sto provando a SELEZIONARE dalla vista dba_tab_cols da una procedura memorizzata. Non funziona e non so perché.

Se eseguo il seguente SQL come query:

SELECT t.data_type FROM dba_tab_cols t
WHERE 
    t.table_name = 'ACCOUNTTYPE' AND 
    t.column_name = 'ACCESSEDBY';

funziona benissimo. Tuttavia, se lo copio in una stored procedure in questo modo:

SELECT t.data_type INTO dataType FROM dba_tab_cols t
WHERE
    t.table_name = 'ACCOUNTTYPE' AND 
    t.column_name = 'ACCESSEDBY';

Ricevo il messaggio di errore " PL / SQL: ORA-00942: la tabella o la vista non esiste " e l'editor evidenzia dba_tab_cols mentre tenta di compilare. Lo stesso utente db viene utilizzato in entrambi i casi.

dataType è dichiarato come:     dataType varchar2 (128);

PL / SQL (Oracle 9)

Qualcuno conosce il problema?

È stato utile?

Soluzione

Molto probabilmente è un problema di privilegi. L'autorizzazione ad accedere a dba_tab_columns tramite un ruolo o è una concessione a selezione diretta per il tuo utente? I privilegi concessi tramite ruoli non sono disponibili in SPROCS.

Una rapida occhiata a google suggerisce di usare all_tab_cols e vedere se quella tabella ha le informazioni richieste di cui hai bisogno.

Altri suggerimenti

Per aggiungere alla risposta di Eoin:

  

Per la maggior parte delle persone, si presenta come a   sorpresa che l'utente non possa selezionare   la tabella dall'interno di una procedura se   non gli è stato concesso il selezionare   direttamente (al contrario di attraverso   il ruolo)

     

Se l'utente della tabella tenta di compilare questo   procedura, ottiene un ORA-00942   sebbene questa tabella certamente esista   e gli è stato concesso il diritto di selezionare   questo tavolo. Il problema è che   le procedure non rispettano i ruoli; solo   i diritti concessi direttamente sono rispettati.   Quindi, ciò significa che il proprietario della tabella deve   pentire il diritto di selezionare:

http://www.adp-gmbh.ch/ora/err /ora_00942.html

Non ho installato Oracle, ma forse dataType è una parola riservata. Proverei qualcos'altro.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top