在oracle中,我程序中传参是这样的('1234','4567')  这样格式!传递到存储过程中为什么查不出来值啊?我的存储过程条件是 where num in (参数),请大家帮忙看下!

解决方案 »

  1.   

       PROCEDURE p_getsumsorder (p_sordor_no IN VARCHAR2, p_cur OUT curtype)
       IS
       BEGIN
          OPEN p_cur FOR
             SELECT   b.product_no, SUM (b.product_qty) AS product_qty,
                      b.product_unit, product_name, pdt_color, sale_price
                 FROM oms.ptl_sorder_detail b JOIN oms.ptl_sorder_head c
                      ON b.sorder_no = c.sorder_no
                      JOIN oms.oms_product d ON b.product_no = d.product_no
                WHERE c.sorder_no in (p_sordor_no)
             GROUP BY b.product_no,
                      b.product_unit,
                      product_name,
                      pdt_color,
                      sale_price;
    存储过程!public DataTable getSumOrder(string order_no)
            {
                _SP = "scm.pk_agent_mgt.p_getsumsorder";
                _spParameters = new Object[] { order_no, DBNull.Value };
                return ExecuteDataTable();
            }这是代码!
      

  2.   

    这样试试看看
    p_getsumsorder('1234,4567',outvar);
      

  3.   

                 SELECT   b.product_no, SUM (b.product_qty) AS product_qty,
                      b.product_unit, product_name, pdt_color, sale_price
                 FROM oms.ptl_sorder_detail b JOIN oms.ptl_sorder_head c
                      ON b.sorder_no = c.sorder_no
                      JOIN oms.oms_product d ON b.product_no = d.product_no
                WHERE c.sorder_no in (' S101958823',' S101958824')
             GROUP BY b.product_no,
                      b.product_unit,
                      product_name,
                      pdt_color,
                      sale_price;传进来应该要是这样的!我程序字符串是string str="' S101958823',' S101958824'";这样传进去的
      

  4.   

    你要是用 IN 的话,我建议把过程中的SQL语句改成动态的,好像传值只能用比较操作。
      

  5.   

    var_sql:='SELECT b.product_no, SUM (b.product_qty) AS product_qty, b.product_unit, product_name, pdt_color, sale_price
      FROM oms.ptl_sorder_detail b JOIN oms.ptl_sorder_head c  ON b.sorder_no = c.sorder_no
      JOIN oms.oms_product d ON b.product_no = d.product_no
      WHERE c.sorder_no in ('||p_sordor_no||') GROUP BY b.product_no,  b.product_unit,  product_name,  pdt_color,  sale_price';
      
     execute IMMEDIATE var_sql
      

  6.   

    最后一句改成
    OPEN p_cur FOR  var_sql