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