Cita:
Iniciado por Sh3r3z4d4 Otra observacion leo_star es que jamas cierras tu cursor te faltaria...
ademas me imagino que ocupas el cursor para otra cosa por que no entiendo para que haces un cursor a la tabla SYSTEM.CONTROL_PERMISOS y en el delete haces exactamente lo mismo
y con respecto al error que te manda creo k te funcionaria asi
'DELETE FROM SYSTEM.CONTROL_PERMISOS WHERE USUARIO = '''|| v_user||'''';
CURSOR borra_usuario IS SELECT USUARIO, ROL FROM SYSTEM.CONTROL_PERMISOS WHERE USUARIO = v_usuario;
BEGIN
OPEN borra_usuario;
LOOP
FETCH borra_usuario INTO v_user, v_rol;
EXIT WHEN borra_usuario%NOTFOUND;
consulta:= 'DELETE FROM SYSTEM.CONTROL_PERMISOS WHERE USUARIO = '|| v_user;
EXECUTE IMMEDIATE consulta;
END LOOP;
CLOSE borra_usuario;
COMMIT;
END BORRAR_ROLES_USUARIO;
Correcto, las comillas las has puesto correctamente, acabo de comprobarlo.
Otra cosa, creo que esto : EXECUTE IMMEDIATE consulta;
Debe de ir así : EXECUTE IMMEDIATE(consulta);
Y respecto a los cursores, recomiendo usar una variable en lugar del open,
FOR VARIABLE IN CURSOR LOOP
..
..
END LOOP;
Todo eso lleva un OPEN-CLOSE-EXIT implicito y te evitas el teclearlo.
Salu2