Oracle简单的存储过程+根据条件修改字段值

1、decode用法:decode(条件,条件值1,返回值1,条件值2,返回值2)

BEGIN
  UPDATE relationship
  SET current = DECODE(rel_type,1,'is employee of',
                                4,'primary contact for', 
                                5,'owns account'),
      expired = DECODE(rel_type,1,'was employee of',
                                4,'primary contacted for', 
                                5,'owned account');
EXCEPTION
WHEN OTHERS THEN
  DBMS_OUTPUT.PUT_LINE(SQLCODE||'---'||SQLERRM);
  ROLLBACK;
END;

2、除了decode函数,还可以使用:case  when  then

BEGIN
  UPDATE relationship
  SET current = (
    CASE
      WHEN rel_type = 1  THEN 'is employee of'
      WHEN rel_type = 4  THEN 'primary contact for'
      WHEN rel_type = 5  THEN 'owns account'
    END),
    expired_state = (
    CASE
      WHEN rel_type = 1  THEN 'is employee of'
      WHEN rel_type = 4  THEN 'primary contacted for'
      WHEN rel_type = 5  THEN 'owned account'
    END);
EXCEPTION
WHEN OTHERS THEN
  DBMS_OUTPUT.PUT_LINE(SQLCODE||'---'||SQLERRM);
  ROLLBACK;
END;
3、Oracle内置函数SQLCODE和SQLERRM是特别用在OTHERS处理器中,分别用来返回Oracle的错误代码和错误消息。

       sqlerrm:SQLERRM是一则函数。Oracle sqlerrm函数 sqlerrm函数返回指定错误代码的错误信息。

       sqlcode:数据库操作的返回码,其中0—成功;-1—失败;100_没有检索到数据。

你可能感兴趣的:(Oracle)