2009-05-04 4 views
0

開発データベースでは正常に実行されるが、本番データベースでは実行されないストアドプロシージャ? エラーが返されます。異なるデータベースでストアドプロシージャを実行できませんでしたか?

VC++、データベースのOracle

定休:「PLS-00306 <procedure naeme>への呼び出しで間違った番号または引数の型は」:エラーが原因間違った同義語に発生しました。

+0

問題が発生しているプロシージャのシグネチャと、このプロシージャをコールするために使用しているコードを持つと便利です。小さな、単純な例では、プライベートなものを明らかにせずに問題を解決するのに十分なはずです。 –

答えて

0

このエラーは、実行中のプロシージャの問題とは関係ありません。このエラーは、あるデータベースでそれを呼び出す方法と別のデータベースで呼び出す方法と関係があります。 DEVの呼び出し側は、パラメータとパラメータ型の適切な組み合わせを送信しています。最終的にPRODのプロシージャを呼び出すロジックは、異なるパラメータの組み合わせを送信しています。

最初に両方のデータベースのプロシージャー仕様をチェックして、それが本当に同じであることを確認してください。 DEFAULT NULLなどのパラメータ、データ型、または相違点の違いを探します。

次に、データベース間で実際のプロシージャを呼び出すロジックを確認します。通常、パラメータの1つが欠落しているか、データ型が正しくありません。名前付き表記法を使用していない場合は、パラメータの順序も重要です。

最終的にすべてが同じであることが確かであれば、入ってくるパラメータにデータが関連していて、値が不足している可能性があります。

これは固くて明瞭なエラーであり、最終的にどのように呼び出されているかに違いがあることを伝えています。がんばろう。

+0

呼び出しコードとspという名前は、両方のデータベースで同じままです – yesraaj

0

詳細情報を提供する必要があります。 少なくとも、これらの「基本的な」データ型(NUMBER、DATE、VARCHAR2など)か、エキゾチックなデータ型(XMLTYPE、ジオ、ユーザー定義の型?)がありますか? SQL * Plusを使用し、両方のデータベースのスキーマに接続し、 DESC 結果が表示されるように投稿してください。