日期:2014-05-18  浏览次数:20435 次

asp.net oracle 参数化 模糊查询出错
郁闷了半天了,有谁能帮忙解决

string testdemo="abc";
string sql= "SELECT COUNT(*) FROM TestTable WHERE BText LIKE '%:testdemo%'";
OracleParameter parm = new OracleParameter(":testdemo", OracleType.NVarChar, 90);
parm.Value = testdemo;
totalCount = Convert.ToInt32(OracleHelper.ExecuteScalar(OracleHelper.ConnectionString, CommandType.Text, sql, parm));

说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 

异常详细信息: System.Data.OracleClient.OracleException: ORA-01036: 非法的变量名/编号

------解决方案--------------------
C# code
where = " and title like '%'+:testdemo+'%'";//注意这里跟普通不带Like条件或者直接Like查询不一样
OracleParameter parm = new OracleParameter("testdemo", OracleType.NVarChar, 90);

------解决方案--------------------
将“+”改为“||”
------解决方案--------------------
BText LIKE '%' || :testdemo|| '%'
------解决方案--------------------
PL/SQL中用|| 吧。。。
------解决方案--------------------
SQL code
string sql= "SELECT COUNT(*) FROM TestTable WHERE BText LIKE '%'||:testdemo||'%'";