何度だって引っかかる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

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

関連記事

C# OracleDbAccessを使用して、SQL実行時にORA-00911 文字が無効です のエラー

表題のとおり、C#でOracleDbAccessを使用して、SQLを実行させる時に発生しました。 ネットで探すと、 全角スペースが原因 とか出てきたので、SQL内のスペースを全て半角スペースに置き換え …

[C#]リストをカンマ区切りの文字列で出力する

リストの項目をカンマ区切りで出力したい 卵が先か鶏が先か~って話じゃないんですが、リストで出力した内容をカンマ区切りのデータにする必要が出てきたので、調べました。 List<string> …

[ORACLE]統計更新を強制的にする

Oracleの統計情報の更新方法 頻度はそんなに無いというか、先日、トラブル対応時に必要に迫られたので・・・ 通常は、Oracleの統計情報は1日1回更新されるらしいんだけど、夜とかになるみたい。 多 …

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

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

C#で発生するORA-01036:illegal variable name/numberのエラーの解決法

毎度毎度、原因の分かりづらいエラーにハマりますw 今回は、「ORA-01036:illegal variable name/number」。 日本語に直訳された内容だと「変数の名前/数が無効です」とな …


カテゴリー