OleDbParameter[] oledb = new OleDbParameter[]{new OleDbParameter("@clinicno",OleDbType.VarChar,50),
new OleDbParameter("@advicid",OleDbType.VarChar,50)};
oledb[0].Value = clino;
oledb[1].Value = advicid; string getInfo = @"select * from VIEW_DRUG_INFO WHERE CLINICNO= @clinicno AND ADVICEID like @advicid||'__'";
DataSet ds = CommonHelper.ExecuteDataset(CommonHelper.LogConn, CommandType.Text, getInfo, null);
rptDrugUserInfo.DataSource = ds;
rptDrugUserInfo.DataBind();
我执行这个语句的提示是 missing expression 错误。我在@clinicno和@advicid加上单引号就不是这个错。但是查询不到数据。
各位大侠,这是什么问题啊。
--这么应该可以了吧,参数是你外界传进来,交给oracle处理的
string getInfo = @"select * from VIEW_DRUG_INFO WHERE CLINICNO="+@clinicno+" AND ADVICEID like "+@advicid+"||'__'";
上面我写的那个错了,应该是这个
string getInfo = @"select * from VIEW_DRUG_INFO WHERE CLINICNO="+@clinicno+" AND ADVICEID like '"+@advicid+"||__'";
为你从数据库中获取数据集而构造的查询语句;
@clinicno和@advicid是你提供的参数,你在C#程序中传入sql查询语句的参数,
如果你不用字符串连接,那我给你看看你上面的语句在oracle里面会解析成什么:
select *
from VIEW_DRUG_INFO
WHERE CLINICNO= @clinicno AND
ADVICEID like @advicid||'__';
你能告诉我oracle怎么知道clinicno和@advicid这两个参数是什么,数据表里面有这两个列属性吗?
打出来 看看对不对
new OleDbParameter("@advicid",OleDbType.VarChar,50)};
oledb[0].Value = clino;
oledb[1].Value = advicid;
着两个参数现在已经赋值了。
select *
from VIEW_DRUG_INFO
WHERE CLINICNO= @clinicno AND
ADVICEID like @advicid||'__';
现在这条语句问题就是如果两个@参数不加单引号就会报错:missing expression 加了单引号就不报错但是查询不到数据。
select *
from VIEW_DRUG_INFO
WHERE CLINICNO= @clinicno AND
ADVICEID like '@advicid__';个人觉得还是,你的sql语句写的有问题,
like模糊查询都是这样的:
select col_1,col_2 from table_name
where col_3 like '%126.com';
或者
select col_1,col_2 from table_name
where col_3 like '%126.__';(这里是连个下划线,代表2个字符)