decode (expr, comp1, value1,
            comp2, value2,
            ......
            default)
 select decode('abc','a',1,
                'b',2,
                'abc',3,
                -1) exp from dual;
exp
-----
3

解决方案 »

  1.   

    Oracle 9i中支持IF-THEN-ELSE和CASE 语句下面是几个例子
    ------------------------------------------------
    DECLARE
      v_Major students.major%TYPE;
      v_CourseName VARCHAR2(10);
    BEGIN
      SELECT major
        INTO v_Major
        FROM students
        WHERE ID = 10011;  IF v_Major = 'Computer Science' THEN
        v_CourseName := 'CS  101';
      ELSIF v_Major = 'Economics' THEN
        v_CourseName := 'ECN 203';
      ELSIF v_Major = 'History' THEN
        v_CourseName := 'HIS 101';
      ELSIF v_Major = 'Music' THEN
        v_CourseName := 'MUS 100';
      ELSIF v_Major = 'Nutrition' THEN
        v_CourseName := 'NUT 307';
      ELSE
        v_CourseName := 'Unknown';
      END IF;  DBMS_OUTPUT.PUT_LINE(v_CourseName);
    END;
    /
    DECLARE
      v_Major students.major%TYPE;
      v_CourseName VARCHAR2(10);
    BEGIN
      SELECT major
        INTO v_Major
        FROM students
        WHERE ID = 10011;  CASE v_Major
        WHEN 'Computer Science' THEN
          v_CourseName := 'CS  101';
        WHEN 'Economics' THEN
          v_CourseName :='ECN 203';
        WHEN 'History' THEN
          v_CourseName := 'HIS 101';
        WHEN 'Music' THEN
          v_CourseName := 'MUS 100';
        WHEN 'Nutrition' THEN
          v_CourseName := 'NUT 307';
        ELSE
          v_CourseName := 'Unknown';
      END CASE;  DBMS_OUTPUT.PUT_LINE(v_CourseName);
    END;
    /DECLARE
      v_TestVar NUMBER := 1;
    BEGIN
      CASE v_TestVar
        WHEN 2 THEN DBMS_OUTPUT.PUT_LINE('Two!');
        WHEN 3 THEN DBMS_OUTPUT.PUT_LINE('Three!');
        WHEN 4 THEN DBMS_OUTPUT.PUT_LINE('Four!');
      END CASE;
    END;
    /DECLARE
      v_TestVar NUMBER := 1;
    BEGIN
      <<MyCase>>
      CASE v_TestVar
        WHEN 1 THEN DBMS_OUTPUT.PUT_LINE('One!');
        WHEN 2 THEN DBMS_OUTPUT.PUT_LINE('Two!');
        WHEN 3 THEN DBMS_OUTPUT.PUT_LINE('Three!');
        WHEN 4 THEN DBMS_OUTPUT.PUT_LINE('Four!');
      END CASE MyCase;
    END;
    /DECLARE
      v_Test1 NUMBER := 2;
      v_Test2 VARCHAR2(20) := 'Goodbye';
    BEGIN
      CASE
        WHEN v_Test1 = 1 THEN
          DBMS_OUTPUT.PUT_LINE('One!');
          DBMS_OUTPUT.PUT_LINE('Another one!');
        WHEN v_Test1 > 1 THEN
          DBMS_OUTPUT.PUT_LINE('> 1!');
          DBMS_OUTPUT.PUT_LINE('Still > 1!');
        WHEN v_Test2 = 'Goodbye' THEN
          DBMS_OUTPUT.PUT_LINE('Goodbye!');
          DBMS_OUTPUT.PUT_LINE('Adios!');
        ELSE
          DBMS_OUTPUT.PUT_LINE('No match');
      END CASE;
    END;
    /
    ------------------------------------------------
      

  2.   

    请写清楚!!我很水的啊!我要实现的功能是
    declare @aa char(2)
    declare @bb char(2)declare @ccc tinyint
    declare @ddd tinyint
    declare @eee tinyintif @aa = 'aa' 
    begin
        if @bb = '1'
            set @ccc = 1
        if (@bb = '2' or @bb = '3')
            set @ccc = 2
        if @bb = '4'
            set @ccc = 3
    endif @aa = 'bb' 
    begin
        if (@bb = '1' or @bb = '2')
            set @ddd = 1
        if @bb = '3'
            set @ddd = 2
        if @bb = '4'
            set @ddd = 3
    end
     if @aa = 'cc' 
    begin
        if (@bb = '1' or @bb = '2')
            set @ddd = 1
        if @bb = '3'
            set @ddd = 2
        if @bb = '4'
            set @ddd = 3
    end就是完成这样的功能,请各位大侠看看