もう5年以上前にパラメタライズドクエリのパラメタ名でトラブった話

久しぶりに、近所ではまっている場面を見かけたので、簡単な事だが書いておこう。

インスタンスの照合順序がJAPANESE_CI_ASの時

クエリ中のパラメタ名が、Abcの時にパラメタ宣言がabcとなっていても、問題なく動作する。

しかし、

インスタンスの照合順序がJAPANESE_BINとか、JAPANESE_CS_AS等、case sensitiveな設定になっている時

クエリ中のパラメタ名が、Abcの時にパラメタ宣言がabcとなっていると、Abcとabcを区別するので、”パラメタが宣言されていない”といった類のエラーになる。

これは、データベースの照合順序がcase insensitiveになっていても、発生する。

パラメタ名はインスタンスの照合順序に依存しているからである。

#ケアレスミス修正

Share