martes, 16 de diciembre de 2008

ORA-00942 La tabla o vista no existe (pero sí existe)

Este error nos ha salido a muchos y generalmente se presenta cuando realmente la tabla o vista no existe en el esquema en el que la queremos usar.

Pero otras veces se genera porque no se han dado los permisos necesarios hacia la tabla o vista, o porque estamos intentando referenciar la tabla sin su esquema (cuando pertenece a otro) y el motor de base de datos se confunde si hay otro objeto en la base de datos con el mismo nombre.

Sin embargo, aunque la tabla exista y aunque se tengan los permisos necesarios para acceder a ella y se use el nombre del esquema al que pertenece, todavía existe la posibilidad de que nos salga el error ORA-00942. Resulta que si los permisos sobre la tabla o vista son concedidos a un rol al que pertenece el usuario con el que necesitamos accederla, es posible ejecutar query's normalmente. Pero si estos query's se van a ejecutar dentro de un procedimiento almacenado, nos vamos a encontrar con ORA-00942.

Qué pasa?
Pues no sé si sea un bug en el RDBMS, o esa sea su forma de administrar los privilegios o tal vez es por razones de seguridad, pero para poder acceder a una tabla o vista desde un procedimiento almacenado, el usuario debe haber adquirido los privilegios directamente y no a través de un rol.

4 comentarios:

ruben dijo...

Cual es la solucion, estoy programando con Oracle ADF
y tengo este problem, ya los publique, tengo los EO y sigue el error ORA-00942: la tabla o vista no existe

Oscar. dijo...

Hola Rubén.
Pero esto te pasa en la ejecución de un procedimiento almacenado? Porque eso fue lo que me sucedió a mí.
Lo que tuve que hacer fue asignarle los permisos directamente al usuario con el que se iban a ejecutar las consultas y no por rol.

Eduardo Náquira dijo...

Oscar, yo también tengo el mismo problema cuando quería consultar una tabla mediante un cursor. Muchas gracias, creo que es un excelente aporte!

ITP TIC's dijo...
Este comentario ha sido eliminado por el autor.