Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

2.6K
Vistas
Oracle Apex: error de acción dinámica: la llamada Ajax devolvió el error del servidor ORA-20987

Tengo un formulario y un elemento de entrada debe ser único. (Es la clave principal). Cuando hago clic para agregar, aparece un mensaje de error. Está bien, pero quiero recibir este mensaje de error cuando configuro el valor del artículo, no cuando llené todos los formularios y hice clic en el botón AGREGAR.

Por ejemplo, tengo una tabla COUNTRY con una columna COUNTRY_ID. La columna COUNTRY_ID debe ser única.

  1. Creé un elemento de página oculto: C_ID_CHECK

  2. Creé una acción dinámica:

Evento --> cambiar

Tipo de selección --> Artículo

Artículo --> P6_COUNTRY_ID

  1. Creé una verdadera acción dinámica. Ejecutar código del lado del servidor --> pl/sql
 DECLARE pk_error NUMBER; BEGIN SELECT 1 INTO pk_error FROM COUNTRY WHERE COUNTRY_ID = :P6_COUNTRY_ID; :P6_C_ID_CHECK := 'Y'; EXCEPTION WHEN others THEN :P6_C_ID_CHECK := 'N'; END;

Elementos para enviar --> :P6_COUNTRY_ID

Artículos para devolver --> :P6_C_ID_CHECK

Entonces, si el nuevo COUNTRY_ID ya existe, entonces el valor de C_ID_CHECK es Y, de lo contrario, N.

  1. Creé otra verdadera acción dinámica. Acción --> Alerta

Condición del lado del cliente:

Tipo --> Artículo = Valor

Artículo --> P6_C_ID_CHECK

Valor --> Y

Entonces, si la primera acción dinámica puso el valor Y en el elemento P6_C_ID_CHECK, esta acción dinámica generará una alerta si el valor es Y.

Cuando lo probé me salió este mensaje:

La llamada Ajax devolvió el error del servidor ORA-20987: APEX: intento de guardar el elemento P6_COUNTRY_ID en estado de sesión durante el procesamiento de la presentación. El nivel de protección del elemento indica: El elemento puede establecerse cuando va acompañado de una suma de comprobación de "sesión".

No se pasó ninguna suma de verificación o la suma de verificación pasada sería adecuada para un elemento con nivel de protección "(No se proporcionó ninguna suma de verificación)".

Nota: los usuarios finales reciben un mensaje de error diferente. - Póngase en contacto con el administrador de su aplicación. para ajax_set_session_state.

¿Qué puede salir mal? ¿Es esta una buena manera de recibir una notificación inmediata si intento insertar datos incorrectos o hay alguna otra manera más fácil?

about 4 years ago · Santiago Gelvez
2 Respuestas
Responde la pregunta

0

Esta no es la forma correcta de manejar claves primarias en Apex. Siempre haga que la base de datos maneje sus claves primarias, ya sea (1) usando un disparador y una secuencia, esta es la forma antigua o (2) usando una columna de identidad, esta es la forma más moderna.

Luego, en su aplicación, deje que los procesos de formulario nativos hagan el trabajo por usted. Marque el elemento de clave principal en su formulario como "Clave principal" y listo.

Pruébelo en una aplicación de muestra en los datos de muestra de emp/dept. Cree una nueva página de tipo Informe interactivo y marque "incluir formulario". Utilice "EMP" como tabla. Esto generará un informe y un formulario que maneja tanto la creación de nuevos registros como la actualización de registros existentes. Nunca es necesario verificar si el PK es único.

Aquí hay un blog muy completo del equipo de desarrollo de Apex que explica la funcionalidad del formulario.

about 4 years ago · Santiago Gelvez Denunciar

0

Estoy de acuerdo con Koen en que este no es un buen diseño.

Pero para responder a su pregunta, el mensaje de error dice que tiene activada la "protección de elementos". Edite su componente P6_C_ID_CHECK y establezca Value Protected en "No". Eso debería permitirle actualizarlo desde una acción dinámica.

Consulte esta pregunta similar y la documentación para los tipos de elementos "ocultos".

about 4 years ago · Santiago Gelvez Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda