PACKAGE BODY DUKEPACKAGE
IS
 
PROCEDURE DUKESELECT
  ( vname IN Varchar2,vedu IN Varchar2,vheight1 IN Varchar2,
     vsex IN Varchar2,cur_two OUT y_cursor)
IS
 sqll varchar2(1000);BEGIN   sqll :='select name,sex,ID,BIRTHDAY,RESPOLICE,addictno from addict where 1=1;
   if(vname <>'') then
   sqll := sqll||'and name like '||'''%'||vname||'%''';end if;   if(vedu <>'') then
   sqll := sqll||'and education ='||''''||vedu||'''';end if;   if(vsex <>'3') then
   sqll := sqll||'sex ='||''''||vsex||'''';end if;   if(vheight1 <>'') then
   sqll := sqll||'height1 like '||'''%'||vheight1||'%''';end if;
 
 OPEN cur_two for sqll;END DUKESELECT;END;

解决方案 »

  1.   

    能帮我看下,我写错否..因为在C#中调用时候,WHERE下的条件都是传不进值
      

  2.   

    dbms_output.put(sql1);楼主可以逐步的调试看看输出结果是不是想要的。
      

  3.   

    protected void Page_Load(object sender, EventArgs e)
        {
            
            string cn;
             cn = "Data Source=duke;Persist Security Info=True;User ID=gxjd;Password=gxjd";      
            OracleConnection conn = new OracleConnection(cn);
            conn.Open();
            OracleCommand cmd = new OracleCommand("DUKEPACKAGE.DUKESELECT", conn);
            cmd.CommandType = CommandType.StoredProcedure;        OracleParameter name11 = new OracleParameter("vname", OracleType.VarChar, 10);
            name11.Direction = ParameterDirection.Input;
            name11.Value = Request.QueryString["name"];
            cmd.Parameters.Add(name11);
            
            OracleParameter edu11 = new OracleParameter("vedu", OracleType.VarChar, 10);
            edu11.Direction = ParameterDirection.Input;
            cmd.Parameters.Add(edu11);
            edu11.Value = Request.QueryString["edu"];        OracleParameter height11 = new OracleParameter("vheight1", OracleType.VarChar, 10);
            height11.Direction = ParameterDirection.Input;
            cmd.Parameters.Add(height11);
            height11.Value = Request.QueryString["height1"];        OracleParameter sex11 = new OracleParameter("vheight2", OracleType.VarChar, 10);
            sex11.Direction = ParameterDirection.Input;
            cmd.Parameters.Add(sex11);
            sex11.Value = Request.QueryString["height2"];        OracleParameter height22 = new OracleParameter("vsex", OracleType.VarChar, 10);
            height22.Direction = ParameterDirection.Input;
            cmd.Parameters.Add(height22);
            height22.Value = Request.QueryString["sex"];        OracleParameter birthday11 = new OracleParameter("vbirthday1", OracleType.VarChar, 10);
            birthday11.Direction = ParameterDirection.Input;
            cmd.Parameters.Add(birthday11);
            birthday11.Value = Request.QueryString["birthday1"];        OracleParameter birthday22 = new OracleParameter("vbirthday2", OracleType.VarChar, 10);
            birthday22.Direction = ParameterDirection.Input;
            cmd.Parameters.Add(birthday22);
            birthday22.Value = Request.QueryString["birthday2"];        OracleParameter Nationality11 = new OracleParameter("vnationality", OracleType.VarChar, 10);
            Nationality11.Direction = ParameterDirection.Input;
            cmd.Parameters.Add(Nationality11);
            Nationality11.Value = Request.QueryString["Nationality"];        OracleParameter bb = new OracleParameter("cur_two", OracleType.Cursor);
            bb.Direction = ParameterDirection.Output;
            cmd.Parameters.Add(bb); 
            cmd.ExecuteNonQuery();
            OracleDataAdapter oa = new OracleDataAdapter(cmd);
            DataSet ds = new DataSet(); 
            
            oa.Fill(ds);
            GridView1.DataSource = ds.Tables[0].DefaultView;
            GridView1.AllowPaging = true;
            GridView1.PageSize = 10;
            GridView1.DataBind();
            conn.Close();
        }
      

  4.   

    晕...有点长,郁闷,主要是看下最后10行那里,我调用的是输出游标..不晓得是否已经输出了?我可以在Gridview中得到结果,但是使用where做条件查询时候,都无法使用选择查询..