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
CREATE OR REPLACE PROCEDURE FILTRO_PERMISOS AS i NUMBER:= 0; fecha_actual DATE; CURSOR expiracion IS SELECT USUARIO, ROL, EXPIRA FROM SYSTEM.CONTROL_PERMISOS ; v_usuario varchar2(30); v_rol varchar2(30); v_expira varchar2(30); BEGIN SELECT SYSDATE INTO fecha_actual FROM DUAL; OPEN expiracion; FOR i IN 1.. expiracion%ROWCOUNT LOOP FETCH expiracion INTO v_usuario, v_rol, v_expira; IF v_expira > fecha_actual THEN --AQUI ESTA EL ERROR REVOKE v_rol FROM SYSTEM.CONTROL_PERMISOS; END IF; END LOOP; 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!