11

次のようなOracleスクリプトがあります。

variable L_kSite number;
variable L_kPage number;
exec SomeStoredProcedureThatReturnsASite( :L_kSite );
exec SomeStoredProcedureThatAddsAPageToTheSite( :L_kSite, :L_kPage );
update SiteToPageLinkingTable 
set HomePage = 1 
where kSite = :L_kSite and kPage = :L_kPage;

おそらく最後のステートメントはバインド変数の有効な使用法ですが、スクリプトを実行しようとすると、最後の行に次のように表示されます。

SQL Error: Missing IN or OUT parameter at index:: 1

私はOracleに特に精通していないため、ここでどのように進めるかはわかりません。

4

6 に答える 6

19

JavaコードでJDBCを使用していたときに、同様のエラーが発生しました。

このWebサイト(2番目のawnser)によると、パラメーターが欠落しているクエリを実行しようとしていることを示しています。

例えば ​​:

exec SomeStoredProcedureThatReturnsASite( :L_kSite );

最後のパラメータなしでクエリを実行しようとしています。

たぶんSQLPlusそれは同じ要件を持っていないので、それがそこで働いたのは幸運だったかもしれません。

于 2011-06-08T02:05:11.907 に答える
6

上記のコメントに基づいて、SQL Developerではなくsqlplusでこれを実行し、UPDATEステートメントは完全に実行されました。特に、ORAエラー番号が返されないため、これはSQLDeveloperの問題であると考えています。私を正しい方向に導いてくれてありがとう。

于 2009-11-18T17:05:40.043 に答える
1

jdbcに関連していると思います。

次のようなwhere条件がある場合、同様の問題が発生します(パラメーターがありません)。

a = :namedparameter and b = :namedparameter

それは大丈夫です、私がこのようになったら:

a = :namedparameter and b = :namedparameter2  (the two param has the same value)

したがって、名前付きパラメータの問題です。名前付きパラメーターの処理にはバグがあると思います。最初のパラメーターのみが正しい値を取得し、2番目のパラメーターはドライバークラスによって設定されていないようです。おそらくそれはバグではなく、私は何かを知らないだけですが、とにかく、SQL開発者がjdbcドライバーを使用しているので、SQLdevとsqlplusが実行されている違いの理由だと思います。

于 2012-01-05T23:17:50.703 に答える
1

同じエラーが発生し、原因が間違っているか、外部キーが欠落していることがわかりました。(JDBCを使用)

于 2014-08-15T16:34:13.983 に答える
1

疑問符を含む列のエイリアスにタイプミスがあったため、このエラーが発生しました(例:contract.reference ascontract?ref)

于 2016-10-31T13:23:42.580 に答える
0

バインドを誤って使用していたため、SQLDeveloperで問題が発生しました。これを使用していた、ログからコピー:

変数=?

する必要があります

変数=:変数

これで、SQLDeveloperから値の入力を求められます。

于 2022-01-13T21:18:27.430 に答える