Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Oracle »

Dar permisos sobre tablas de otro usuario

Estas en el tema de Dar permisos sobre tablas de otro usuario en el foro de Oracle en Foros del Web. Buenas tardes!! Os comento, estoy haciendo una práctica de clase en la que se me pide que le de permisos de consulta a un usuario ...
  #1 (permalink)  
Antiguo 03/11/2015, 10:45
 
Fecha de Ingreso: agosto-2007
Mensajes: 71
Antigüedad: 16 años, 8 meses
Puntos: 1
Dar permisos sobre tablas de otro usuario

Buenas tardes!! Os comento, estoy haciendo una práctica de clase en la que se me pide que le de permisos de consulta a un usuario sobre tablas de otro usuario. Os pongo en situación:

He creado con el usuario PRACTICA2 las tablas CLIENTE, INCLUIR, PEDIDO y PRODUCTO. Ahora, me piden que cree un nuevo usuario llamado PRACTICA2C, el cual debe tener permisos de consulta sobre todas las tablas de PRACTICA2. Se que la orden para dar permisos de consulta sobre esas tablas sería:

Código:
GRANT SELECT ON PRACTICA2.PEDIDO TO PRACTICA2C;
GRANT SELECT ON PRACTICA2.INCLUIR TO PRACTICA2C;
GRANT SELECT ON PRACTICA2.PRODUCTO TO PRACTICA2C;
GRANT SELECT ON PRACTICA2.CLIENTE PRACTICA2C;
Pero me pregunto si hay alguna forma de darle permisos de consulta a todas las tablas a la vez. Es decir, darle permisos de SELECT a PRACTICA2C sobre todas las tablas de PRACTICA2 en una sola orden, sin tener que escribir el nombre de las tablas, ya que en este caso, sería a todas las que tiene.
  #2 (permalink)  
Antiguo 03/11/2015, 12:17
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Dar permisos sobre tablas de otro usuario

Directamente con una sola sentencia, no es posible, pero con este pequeño bloque anonimo lo puedes conseguir:

Código SQL:
Ver original
  1. BEGIN
  2.    FOR cur IN (SELECT TABLE_NAME FROM user_tables) LOOP
  3.       EXECUTE INMEDIATE 'GRANT SELECT ON PRACTICA2.'||cur.TABLE_NAME||' TO PRACTICA2C';
  4.    END LOOP;
  5. END;
  6. /

Lo que hace, es recorrer mediante un cursor las tablas del usuario que quiere dar permisos y ejecutar la sentencia GRANT.

Saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming

Etiquetas: permisos, tablas, usuario
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:56.