何度だって引っかかるORACLEのエラー・・・。ORA-01008:バインドされていない変数があります。

投稿日:2017-05-31

今日も今日とて、ORA-01008のエラーに悩まされる。
無慈悲に「バインドされていない変数があります。」ってメッセージは出してくれるんだけど、ビンゴの位置は教えてくれないわけで・・・

何度目だろう・・・?と思いつつも、解決しない限りは納期が迫ってくるだけなので、ネットでエラー内容を検索。
バインドだから、変数を外部でバインドしてるとこだよな・・・とソースをさかのぼって確認する。
一見、おかしいところは無い。

この一見ってのが曲者で、地味に気づきにくいんだよねぇw

デバッグしつつ、発行されるSQLを見ても、特におかしいところはないし、そのSQL自体は実行できるし。
バインド変数自体が正しく入ってないんだろうな・・・と。

command.Parameters.Add(":param1", (string)whereTable["param1"]);

こんな感じで、パラメータをセットしてるけど、変数名が違ってたって落ちだった。
けど、そもそもSQLのほうは、

SELECT
A.param AS param
:
:
FROM
table1 A

こんな感じで、名前が違ったんだよね。
バインドさせたい変数自体は正しく入ってるし、SQL単体では実行できるしで、原因までたどり着くのに時間がかかった。

ただ、何回もこのエラーでどハマリしてるので、多少は感覚が掴めてきたかもしれない。
1.SQL単体で正しく実行できるか?
2.SQLに対して設定するパラメータは登録する変数に対して過不足じゃないか?
3.そもそもSQL内でのAS区やパラメータの名称が、外部定義時に正しく使用されているか?

この順番で見れば、とりあえず良さげな感じかな。
そりゃぁ、まだ経験してないエラーとか数え切れないけど、まずは目の前のエラーを解決しないと。







-ORACLE
-


  1. […]  日本の中心付近で仕様変更と闘うSE日記 何度だって引っかかるORACL… […]

comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

Oracle Database Bronzeの勉強を始めました。

業務でOracleを使ってます。 DBへの接続と簡単なSQLの確認ぐらいだったら、SQLDeveloperとかのツールを使わずにSQLPlusだけで済ませちゃう人も多いのかな? あとは、SQLのバッチ …

[ORACLE]ORA-00918:列の定義が未確定です・・・のエラーにならなかった

なんでエラーになるものをマージしてるんだ? と、怒られました。 一瞬、理解が出来ず・・・ で、エラーを再現してもらう・・・と。 あっさり発生。 早く修正しろって突っ返されました。 頭には「?」しか浮か …

ORACLEのMERGE INTOで、UPDATEは出来るのに、INSERTできない

最近、Oracleのエラーの話しか書いてない気がするw     便利というか、トランザクション内の処理も1つで済むので、MERGE INTO文を使うことがあります。 実際、 新規デ …

no image

Oracleの再受験無料キャンペーンは5月31日まで

【ピアソンVUE専用】Oracle会場試験用受験チケット(電子チケット) 価格:26,720円 (2019/5/19 14:11時点) 感想(15件) 【ピアソンVUE専用】Oracleオンライン試験 …

ORACLEでDELETEとTRUNCATEのどちらを使うか。

未だに迷う。 例えば、テーブル全件削除をしたいときは delete * from tableA; delete文なら、こうだし。 truncate tableA; truncate文なら、こう。


カテゴリー