.net 4.0 C#, IBatisNet 및 CSLA 프레임 워크로 엔터프라이즈 프로젝트가 있습니다."ORA-01084 : OCI 호출에서 잘못된 인수가 있습니다."
패키지에 insert proc를 호출 할 때 프로젝트 작업 중 하나가 ORA-01084: invalid argument in OCI call
으로 실패했습니다. 반환 된 오류 메시지는 기껏해야 어리 석다. 저장 프로 시저에는 이름으로 바인딩되지 않은 83 개의 입력 매개 변수가 있습니다 (IBatis 덕분에).
호기심 : 나는 Order
과 OrderItems
라고하는 일련의 기록을 가지고 있습니다. Order
에는 28 개의 주문 항목이 있습니다. 작업은 Order
을 새로 만들고 OrderItems
개의 레코드를 모두 복사하여 주문을 갱신해야합니다. 새 주문 항목은 이전 주문 항목을 ParentOrderItemId
필드로 참조하며 이는 갱신 예정인 Orders
의 선택 기준이기도합니다.
처음 실행하면 OrderItemId: 12345
에 프로세스가 실행되고 ORA-01084
오류가 발생합니다. 하지만 다음 번에 다시 실행하면 OrderItemId: 12345
을 성공적으로 처리합니다. 그리고 OrderItemId: 12444
에 불어납니다. 그런 다음 다시 실행하여 OrderItemId: 12444
을 올바르게 처리하는 식으로 진행합니다.
전달 된 DbParameters의 로그가 있는데 두 경우 모두 같습니다.
oci 클라이언트 추적이 있지만 유용하지는 않습니다.
데이터베이스 계층에 로깅을 설정했지만 지금까지는 아무 것도주지 않았습니다.
어떤 아이디어가 이러한 유형의 오류를 추적하는 방법?
막연한 생각 : OCI 호출로 전달 된 매개 변수가 첫 번째 실패 및 두 번째 성공적인 실행에서 동일하면 (DbParameters 로그에서 볼 수 있듯이), 일종의 초기화 오류가있을 수 있으며 null이 포함될 수 있습니다. 값. –
"데이터베이스 계층에 로깅"이라고 말하면 스토어드 프로 시저가 입력 매개 변수를 로깅한다는 의미로 어딘가에서 열 값의 불일치가 발생하지 않았 음을 확인할 수 있습니까? –
예, 나는 모든 곳에서 철저한 로깅을 추가하여 전달되는 내용을 자세히 볼 수 있습니다. – b0rg