Ver Mensaje Individual
  #1 (permalink)  
Antiguo 27/01/2012, 11:56
leo_star
 
Fecha de Ingreso: agosto-2011
Mensajes: 20
Antigüedad: 12 años, 8 meses
Puntos: 0
pequeño código, gran error :( ?

Que tal amigos?,
escribo para ver si me pueden ayudar a solucionar mi código.

Trato de crear un procedimiento que cada vez que se ejecute, de "de baja" a todos los usuarios que ya expiró su permiso, quitandoles el permiso al ROl. algo como "REVOKE rol FROM usuario;" pero para todos los usuarios de la tabla.


Código SQL:
Ver original
  1. CREATE OR REPLACE
  2. PROCEDURE FILTRO_PERMISOS AS
  3.  
  4. i NUMBER:= 0;
  5. fecha_actual DATE;
  6. CURSOR expiracion IS SELECT USUARIO, ROL, EXPIRA FROM SYSTEM.CONTROL_PERMISOS ;
  7. v_usuario varchar2(30);
  8. v_rol varchar2(30);
  9. v_expira varchar2(30);
  10.  
  11. BEGIN
  12.  
  13. SELECT SYSDATE INTO fecha_actual FROM DUAL;
  14.  
  15. OPEN expiracion;
  16.  
  17. FOR i IN 1.. expiracion%ROWCOUNT LOOP
  18.  
  19.   FETCH expiracion INTO v_usuario, v_rol, v_expira;
  20.  
  21.   IF v_expira > fecha_actual THEN
  22.  
  23.   --AQUI ESTA EL ERROR
  24.     REVOKE v_rol FROM SYSTEM.CONTROL_PERMISOS;
  25.  
  26.   END IF;
  27.  
  28. END LOOP;
  29.  
  30. END FILTRO_PERMISOS;

Me lanza el siguiente mensaje de error :

Error(23,5): PLS-00103: Se ha encontrado el símbolo "REVOKE" cuando se esperaba uno de los siguientes: ( begin case declare exit for goto if loop mod null pragma raise return select update while with <an identifier> <a double-quoted delimited-identifier> <a bind variable> << continue close current delete fetch lock insert open rollback savepoint set sql execute commit forall merge pipe purge El símbolo "select insertado antes de "REVOKE" para continuar.


no entiendo porque me tira ese error, alguien me puede explicar por favor?
Saludos!