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 originalCREATE 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!