通知
すべてクリア
2007年12月14日 6:49 PM
ODPを使用し、like演算子の比較値をバインド変数とし、かつある文字をエスケープしたい
場合は、どのように記述すればよいでしょうか。
cmd.CommandText = select * from テーブル where カラム like :param || '' ESCAPE
'$';
このようにCommandにセットし、
バインド値としては、「_ああ」を指定しています。
DbParameter para = cmd.CreateParameter();
para.ParameterName = param;
para.Value = $_ああ%;
cmd.Parameters.Add(para);
しかし、このようにすると以下のエラーになってしまいます。
ORA-01489: result of string concatenation is too long
バインドせずに、べたでSQLを記述すると問題なく動きます。
cmd.CommandText = select * from テーブル where カラム like '$_ああ%' ESCAPE '$';
このようなケースでは、バインドは使用できないのでしょうか。
環境は、VisualStudio2005、C#。