我是这样写的UPDATE 表
TYPEID = DECODE( w_typeid<0,TRUE,TYPEID,w_typeid),
....
WHERE ....这里就会报错
Miss 右括号
好像是expression 不对,这里的expression是不是一定要用到函数??还有个问题:
就是:
我从表中查到这条记录,如果用户输入,我就把输入值放入更新,如果没有输入,那么还是根据原值。
所以问题是: TYPEID = TYPEID可以嘛?是不是要用个work变量,先查一下,记录下来?

解决方案 »

  1.   

    TYPEID = DECODE(sign(w_typeid-0),-1,&TYPEID,w_typeid)=======================================================  ·含义解释:  decode(条件,值1,翻译值1,值2,翻译值2,...值n,翻译值n,缺省值)  该函数的含义如下:  IF 条件=值1 THEN  RETURN(翻译值1)  ELSIF 条件=值2 THEN  RETURN(翻译值2)  ......  ELSIF 条件=值n THEN  RETURN(翻译值n)  ELSE  RETURN(缺省值)  END IF
      

  2.   

    举个例子:SELECT ename, sal, deptno,
    CASE 
     WHEN sal <= 500 then 0
     WHEN sal > 500 and sal<1500  then 100
     WHEN sal >= 1500 and sal < 2500  and deptno=10 then 200
     WHEN sal > 1500  and sal < 2500 and deptno=20 then 500
     WHEN sal >= 2500 then 300
     ELSE 0 
    END "bonus"
    FROM emp;
    ENAME             SAL     DEPTNO      bonus
    ---------- ---------- ---------- ----------
    SMITH             800         20        100
    ALLEN            1600         90          0
    WARD             1250         30        100
    JONES            2975         20        300
    MARTIN           1250         30        100
    BLAKE            2850         30        300
    CLARK            2450         10        200
      

  3.   

    如果你非要用decode,可以做一个function ,来做,不然,就用case
      

  4.   

    用case when 看起来更清爽一些