sql - tabla - oracle pivot dinamico
Como sistema en Sqlplus, ¿cómo consulto la tabla de otro usuario? (3)
Necesitas hacer:
SELECT * FROM schema_name.the_table;
O usa SYNONYMs ...
CREATE SYNONYM the_table FOR schema_name.the_table;
De acuerdo con el nombre seleccionado de system_privilege_map, el sistema ha sido otorgado:
SELECT ANY TABLE
... y muchas otras * CUALQUIER TABLA.
Simplemente corriendo
select * from the_table;
select * from the_table;
... redes la respuesta dada:
ERROR en la línea 1: ORA-00942: tabla o vista no existe
Puedo iniciar sesión como ese usuario y ejecutar el mismo comando muy bien.
Me estoy ejecutando bajo la suposición de que debería ser capaz de ejecutar consultas (seleccionar en este caso) a cambio de una tabla DB de usuario general. ¿Mi suposición es correcta? De ser así, ¿cómo lo hago?
Si the_table es propiedad del usuario "some_user", entonces:
select * from some_user.the_table;
Como han dicho las respuestas anteriores, puede anteponer el nombre del objeto con el nombre del esquema:
SELECT * FROM schema_name.the_table;
O puede usar un sinónimo (privado o público):
CREATE (PUBLIC) SYNONYM the_table FOR schema_name.the_table;
O puede emitir un comando alter session para establecer el esquema predeterminado al que desea:
ALTER SESSION SET current_schema=schema_name;
Tenga en cuenta que esto solo establece el esquema predeterminado, y es el equivalente a poner todos los nombres de los objetos (no calificados) schema_name
con schema_name
. Todavía puede prefijar objetos con un nombre de esquema diferente para acceder a un objeto desde otro esquema. El uso de SET current_schema
no afecta sus privilegios: usted todavía tiene los privilegios del usuario que inició sesión, no el esquema que ha establecido.