es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo verificar si tengo los permisos para crear funciones?

Entonces estoy tratando de crear una función almacenada, pero sigo obteniendo este error:

Informe de error -
ORA-00604: ocurrió un error en el nivel recursivo SQL 1
ORA-20900: No hay acceso para modificar el esquema
ORA-06512: en la línea 3
00604. 00000 - "ocurrió un error en el nivel recursivo SQL %s"
*Causa:   Ocurrió un error mientras se procesaba una instrucción SQL recursiva
           (una instrucción aplicada a tablas internas del diccionario).
*Acción:  Si la situación descrita en el siguiente error en la pila
           puede ser corregida, hacerlo; de lo contrario, contactar a Soporte de Oracle.

De hecho, hace 2-3 horas creé algunas funciones y funcionaron perfectamente. No puedo entender realmente qué está sucediendo.

Aquí está el código (no sé si esto es relevante, ya que la función ni siquiera se compila):

CREATE OR REPLACE FUNCTION wsxsxfunct(x_data number)
    RETURN ECHIPE.id_echipa%type IS
    y ECHIPE.id_echipa%type;
BEGIN
    SELECT ID_ECHIPA INTO y
    FROM ECHIPE E, PILOTI P, REZULTATE R, CURSE C
    WHERE P.ID_PILOT = R.ID_PILOT
    AND E.ID_ECHIPA = P.ECHIPA
    AND R.ID_CURSA = C.ID_CURSA
    AND EXTRACT(MONTH FROM C.DATA_CURSA) = x_data;
    RETURN y;
    EXCEPTION
        WHEN NO_DATA_FOUND
            THEN dbms_output.put_line('No se realizó ninguna carrera en el mes ' || x_data);
            RAISE_APPLICATION_ERROR(-20000,
                'No existen empleados con el nombre proporcionado');
        WHEN TOO_MANY_ROWS
            THEN dbms_output.put_line('Se realizaron varias carreras en el mes ' || x_data);
            RAISE_APPLICATION_ERROR(-20001,
                        'Existen varios empleados con el nombre proporcionado');
        WHEN OTHERS
            THEN dbms_output.put_line('Debes llamar a la función con un número entre 1-12, que represente el número del mes');
            RAISE_APPLICATION_ERROR(-20002, '¡Otro error!');
END;
/

Ignora esos mensajes del código. Gracias.

EDIT:

He probado los códigos antiguos de las funciones que creé hace unas horas, y sigo obteniendo el mismo informe de error.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    El mensaje de error “ORA-20900: No se tiene acceso para modificar el esquema” sugiere que la cuenta de usuario utilizada para ejecutar el script no tiene los suficientes privilegios para modificar el esquema de la base de datos. Es posible que los privilegios del usuario hayan sido revocados o modificados desde la última creación exitosa de la función.

    Para resolver este problema, la cuenta de usuario debe ser otorgada los privilegios necesarios para crear, modificar o ejecutar la función. Esto puede ser realizado por un administrador de base de datos otorgando los roles o permisos correspondientes al usuario.

    También es posible que exista un error de sintaxis u otro problema con el código de la función que está causando el error. En este caso, el código debe ser revisado cuidadosamente para identificar cualquier problema y resolverlo antes de intentar crear la función nuevamente.

Comments are closed.