何度だって引っかかる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でTO_CHARを使用し、カンマ区切りデータを出力する

帳票出力を行うPGで困った。 数値形式のデータのため、カンマ区切りで表示したいんだけど、テンプレートの制約のせいで上手く行かなくて時の解決方法。 帳票のテンプレートとなるファイルのセルは文字列形式。 …

Oracle11gでパスワードの有効期限を変更する

先日のOra-28001ですが、他のユーザーも同様になってましたw 当然ですね・・・ 日本の中心付近で仕様変更と闘うSE日記Oracleで「Ora-28001:the password has exp …

ORACLEでSPOOL処理の高速化を試す

ORACLEでSPOOL処理の高速化を考えてみた 事の発端は、お客様のお怒りでした・・・ なんで、お客さんに最新版のリリース時には、必ずスキーマ間の比較をすることを徹底しろと言われてしまったと。 まぁ …

[ORACLE]マテリアライズドビューの一覧を取得する

正直、使わなさ過ぎてマテリアライズドビューって何?って感じではあるけど、たまにフラット出てくるのでメモ。 詳細は、Oracleのリファレンス見てください。 https://docs.oracle.co …

no image

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

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


カテゴリー