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加上单引号就不是这个错。但是查询不到数据。
各位大侠,这是什么问题啊。

解决方案 »

  1.   

    @"select * from VIEW_DRUG_INFO WHERE  CLINICNO= @clinicno  AND ADVICEID like  '@advicid||'__''";
      

  2.   


    --这么应该可以了吧,参数是你外界传进来,交给oracle处理的
    string getInfo = @"select * from VIEW_DRUG_INFO WHERE  CLINICNO="+@clinicno+"  AND ADVICEID like  "+@advicid+"||'__'";
      

  3.   


    上面我写的那个错了,应该是这个
    string getInfo = @"select * from VIEW_DRUG_INFO WHERE  CLINICNO="+@clinicno+"  AND ADVICEID like  '"+@advicid+"||__'";
      

  4.   

    这个不对,有语法错误。@clinicno和@advicid不可以加字符串的
      

  5.   

    这不是字符串相加,这是在构造sql语句,
    为你从数据库中获取数据集而构造的查询语句;
    @clinicno和@advicid是你提供的参数,你在C#程序中传入sql查询语句的参数,
    如果你不用字符串连接,那我给你看看你上面的语句在oracle里面会解析成什么:
    select * 
    from VIEW_DRUG_INFO 
    WHERE  CLINICNO= @clinicno  AND
           ADVICEID like  @advicid||'__';
    你能告诉我oracle怎么知道clinicno和@advicid这两个参数是什么,数据表里面有这两个列属性吗?
      

  6.   

    raise_application_error( -20202, getInfo);
    打出来 看看对不对
      

  7.   

    回复 BOBO12082119OleDbParameter[] oledb = new OleDbParameter[]{new OleDbParameter("@clinicno",OleDbType.VarChar,50),
                                                            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  加了单引号就不报错但是查询不到数据。
      

  8.   

    你将sql查询语句改成下面这个,现在oracle上运行,查询出数据了,在将其转换为传参的c#string
    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个字符)