私はここで、.net 4.0 c#、IBatisNetおよびCSLAフレームワークのエンタープライズ・プロジェクトを持っています。"ORA-01084:OCIコールで無効な引数"を追い越す
パッケージでinsert procを呼び出すと、プロジェクトジョブの1つがORA-01084: invalid argument in OCI call
で失敗しています。返されるエラーメッセージは最高ですが、格納されたprocには名前でバインドされていない83個の入力パラメータがあります(IBatisのおかげで)。
好奇心は何ですか:私はOrder
とOrderItems
という一連のレコードを持っています。 Order
には28件の注文アイテムがあります。ジョブは、別のOrder
を作成し、すべてOrderItems
レコードをコピーして注文を更新する必要があります。新しいオーダーアイテムは、古いオーダーアイテムをParentOrderItemId
フィールドで参照しています。これは、更新予定のOrders
の選択基準です。
初めて実行するとOrderItemId: 12345
にプロセスが吹き込み、ORA-01084
というエラーが表示されます。しかし、次回に再実行すると、OrderItemId: 12345
が正常に処理されます。そして、OrderItemId: 12444
で爆破する。その後、再実行してOrderItemId: 12444
などを正しく処理していきます。
私は両方のケースで同じDbParametersのログを持っています。
私はociクライアントトレースを持っていますが、それは役に立ちません。
私はデータベースレイヤーにログを記録しましたが、これまでは何も与えていません。
これらのタイプのエラーをトレースする方法はありますか?
漠然とした考え方:OCIコールに渡されたパラメータが最初の失敗と2番目の成功した実行で同じである場合(DbParametersのログに表示されているように)、何らかの初期化エラーが発生する可能性があります。値。 –
「データベースレイヤーにログオンしています」と言えば、ストアドプロシージャが入力パラメータを記録するので、カラム値の不一致がどこかで起きたことを確認できますか? –
ええ、どこにでも徹底したロギングを追加して、何が入ったり来たりしているかを詳細に確認できます。 – b0rg