Oracle 课堂五

 一、匿名块
 1、使用returning ... INTO 保存增删改表数据时的一些列的值
 (01)增加数据时保存数据
DECLARE
  v_ename emp.ename%TYPE;
  v_sal emp.sal%TYPE;
BEGIN
  INSERT INTO emp(empno,ename,JOB,sal,comm,deptno) VALUES(&no,'zhaoliu','deve',3000,500,10) RETURNING ename,sal INTO v_ename,v_sal;
  dbms_output.put_line(v_ename || ','||v_sal);
end;

---打开控制台输出开关
SET serveroutput ON;

(02)修改数据时保存数据
DECLARE
  v_ename emp.ename%TYPE;
  v_sal emp.sal%type;
BEGIN
  UPDATE emp SET sal=sal+100 WHERE empno=&no RETURNING ename,sal INTO v_ename,v_sal;
  dbms_output.put_line(v_ename || ','||v_sal);
END;

(03)删除数据时保存数据
DECLARE
  v_ename emp.ename%TYPE;
  v_sal emp.sal%TYPE;
BEGIN
  DELETE FROM emp WHERE empno=&no RETURNING ename,sal INTO v_ename,v_sal;
  dbms_output.put_line(v_ename || ','||v_sal);
END;

二、分支结构
1、if
IF 条件 THEN 结果;
END IF;

IF 条件 THEN 结果;
ELSE 结果;
END IF;

IF 条件 THEN 结果;
elsif 条件 THEN 结果;
....
ELSE 结果;
END IF;

---查询一个员工薪水,判断员工薪水如果大于3000,输出他是一个白领;如果工资小于等于3000大于1500,输出他是一个蓝领;其它情况输出是一个灰领;
DECLARE
  v_sal emp.sal%TYPE;
BEGIN
  SELECT sal INTO v_sal FROM emp WHERE empno=&no;
  IF v_sal>3000 THEN
    dbms_output.put_line('白领');
  elsif v_sal>1500 THEN
    dbms_output.put_line('蓝领');
  ELSE dbms_output.put_line('灰领');
  END IF;
END;

2、case:
格式一:
  CASE WHEN 条件 THEN 结果;
       WHEN 条件 THEN 结果;
       ...
       ELSE 结果;
  END CASE;

格式二:
  CASE 条件表达式 WHEN 值1 THEN 结果1;
                WHEN 值2 THEN 结果2;
                ....
                ELSE 结果m;
  END CASE;
 
---输入一个成绩,判断该成绩等级,如果在99~90之间,返回为A,如果在89~80之间,返回为B,如果在79~70之间,返回C,其它返回为D
DECLARE
  v_score NUMBER(3);
  v_flag VARCHAR2(1);
BEGIN
  v_score:=&score;
  CASE trunc(v_score/10) WHEN 9 THEN v_flag:='A';
                         WHEN 8 THEN v_flag:='B';
                         WHEN 7 THEN v_flag:='C';
                         ELSE v_flag:='D';
  END CASE;
  dbms_output.put_line(v_score || ',该 成绩的等级为:' || v_flag);
END;

三、循环结构
1、直到型循环
loop
  执行循环体;
  exit WHEN 条件;
END loop;

---在控制台输出1~5
DECLARE
  v_i NUMBER(1):=1;
BEGIN
  loop
    dbms_output.put_line(v_i);
    v_i:=v_i+1;
    exit WHEN v_i>5;
  END loop;
end;

2、while:
while 条件
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值