sqlwhere = sqlwhere || nvl(' and fid in ('||materialgroup||')',' ')

解决方案 »

  1.   

    WHERE fid IN NVL('@materialgroup',fid)
      

  2.   

    @materialgroup应该不是一个值吧,语句看起来像是拼的
    放到前端来判断,不会麻烦多少,简便应给效率让路
      

  3.   

    ++如果是单个值没问题,,现在问题是传值是这样的形式 ‘aaaaaa’,'bbbbbbbb'  获取到的传值是这样,
    于是SQL变成了IN NVL( ‘aaaaaa’,'bbbbbbbb' ,fid)就报错了
      

  4.   

    如果是单个值没问题,,现在问题是传值是这样的形式 ‘aaaaaa’,'bbbbbbbb'  获取到的传值是这样,
    于是SQL变成了IN NVL( ‘aaaaaa’,'bbbbbbbb' ,fid)就报错了
      

  5.   

    如果是单个值没问题,,现在问题是传值是这样的形式 ‘aaaaaa’,'bbbbbbbb'  获取到的传值是这样,
    于是SQL变成了IN NVL( ‘aaaaaa’,'bbbbbbbb' ,fid)就报错了
    你这个参数包含有特殊字符,还是用动态SQL吧
      

  6.   

    WHERE fid IN NVL('@materialgroup',fid)NVL(x,value) :如果x为空,返回value,否则返回x。
    NVL2(x,value1,value2) :如果x非空,返回value1,否则返回value2。所以你这个IN NVL( ‘aaaaaa’,'bbbbbbbb' ,fid)肯定是不行的啊,判断的是第一个参数是否为空
      

  7.   

    where ( materialgroup' is null or fid in (materialgroup'))
      

  8.   

    又一个老帖子被翻出来了
    where ( materialgroup is null or instr(materialgroup,fid)>0)