何度だって引っかかる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]ORA-01950: 表領域’USERS’に対する権限がありません。のエラー対処法

  Oracle 12c R2(R1でも同様のエラーが発生)で ORA-01950: 表領域’USERS’に対する権限がありません のエラーが発生しました。 状況とし …

[ORACLE]IMPコマンドで、複数テーブルをインポートする

OracleでIMPコマンドでdumpファイルをインポートする時に、特定のテーブルだけインポートしたい時ってある。 後は、複数のテーブルを纏めてインポートする方法を説明します。 Oracleを使ってる …

[ORACLE]Oracleに接続できない時に確認すること

Oracleを新しくインストールした時に、中々接続できなかったので、その時に確認しておくべき事項のまとめ。 少なくとも、これは先にやっておいた方がいいこととか。 前提条件 前提と書くとものものしいけど …

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

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

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

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


カテゴリー