Tengo aquí el proyecto empresarial con .net 4.0 C#, IBatisNet y CSLA framework.Persiguiendo "ORA-01084: argumento no válido en la llamada OCI"
Uno de los trabajos del proyecto está fallando con ORA-01084: invalid argument in OCI call
al llamar insertar proc en un paquete. El mensaje de error devuelto es críptico en el mejor de los casos, el proceso almacenado tiene 83 parámetros de entrada que no están vinculados por nombre (gracias a IBatis).
Lo curioso: tengo un conjunto de registros digamos Order
y OrderItems
. Order
tiene 28 pedidos. El trabajo debe renovar el pedido creando otro Order
y copiando todos los registros OrderItems
. Los nuevos artículos de pedido hacen referencia a los artículos de pedido anterior por el campo ParentOrderItemId
, que también es un criterio de selección para Orders
que debe renovarse.
Cuando lo ejecuto la primera vez, el proceso sopla en OrderItemId: 12345
con ORA-01084
error. Pero cuando vuelva a ejecutarlo la próxima vez, procesa con éxito OrderItemId: 12345
. Y luego explota en OrderItemId: 12444
. Luego vuelvo a ejecutar y procesa correctamente el código OrderItemId: 12444
, y así sucesivamente.
Tengo registros de DbParameters pasados, son los mismos en ambos casos.
Tengo oci client trace, pero tampoco es útil.
He configurado el inicio de sesión en una capa de base de datos, y hasta ahora no me ha dado nada.
Alguna idea de cómo rastrear ese tipo de errores?
idea vaga: si los parámetros pasados a la llamada OCI son los mismos en la primera ejecución fallida y segunda exitosa (como dijiste se puede ver en el registro de DbParameters), podría haber algún tipo de error de inicialización, posiblemente nulo valores. –
Cuando dices "iniciar sesión en la capa de la base de datos", ¿significa eso que el procedimiento almacenado registra los parámetros de entrada, para que puedas verificar que no haya ningún desajuste entre los valores de las columnas? –
Sí, he agregado un registro minucioso en todas partes para que pueda ver lo que se transfiere en detalle. – b0rg