学习笔记:

##pl/sql编程语言

    * 简介:

        * pl/sql编程语言是对sql语言的扩展,使得sql语言具有过程化编程的特性。


        * pl/sql编程语言比一般的过程化编程语言,更加灵活高效。


        * pl/sql编程语言主要用来编写存储过程和存储函数等。


    * 声明方法

declare 
begin
end;


--开启dbms_output输出
set serveroutput on
--声明方法
declare 
  i number(2) := 10;
  s varchar2(10):= '小明';
  ena emp.ename%type; --引用型变量
begin
  dbms_output.put_line(i);
  dbms_output.put_line(s);
  select ename into ena from emp where empno = 7788;
  dbms_output.put_line(ena);
end;
/

    * pl/sql中的if判断

        * 声明方法

declare
begin
  if then
  elsif then
  else
  end if
end;

        * 案例

        * 输入小于18的数字,输出未成年;输入大于18小于40的数字,输出中年人;输入大于40的数字,输出老年人

declare
  i number(3) := ⅈ
begin
  if i<18 then
    dbms_output.put_line('Young people');
  elsif i<40 then
    dbms_output.put_line('Middle-aged person');
  else
    dbms_output.put_line('Aged');
  end if;
end;

    * pl/sql中的循环

        * 1. while循环


            * 声明方法

declare
begin
  while loop
  end loop;
end;

            * 案例:

declare
  i number(2) := 1;
begin
  while i<= 10 loop
    dbms_output.put_line(i);
    i := i+1;
  end loop;
end;

        * 2. exit循环(常用)

            * 声明方法

declare
begin
  loop
    exit when ;
  end loop;
end;

            * 案例

declare
 i number(2) := 1;
begin
  loop
    exit when i>10;
    dbms_output.put_line(i);
    i := i+1;
  end loop;
end;


        * 3. loop循环


            * 声明方法

declare
begin
  for i in 1..10 loop
  end loop;
end;

            * 案例

declare
 i number(2) := 1;
begin
  for i in 1..10 loop
    dbms_output.put_line(i);
    end loop;
end;

        *注意:

            *三个循环结束皆为end loop;(end先行)


            * exit循环中exit when ; 后面有一个封号


            * 在循环loop开始时都不需要加封号


            * end结束一定有封号


    * pl/sql中的游标


        * 概念:游标可以存放多个对象,多个记录。


        * 案例:输出emp表中所有员工的姓名

declare
  cursor c1 is select * from emp;
  emprow emp%rowtype;
begin
  open c1;
    loop
      fetch c1 into emprow;
      exit when c1%notfound;
      dbms_output.put_line(emprow.ename);
    end loop;
  close c1;
end;

        * 案例2:给指定部门员工涨100块工资(带参数的游标)

declare
  cursor c2(eno emp.deptno%type) 
  is select empno from emp where deptno = eno;
  en emp.empno%type;
begin
  open c2(10);
    loop
      fetch c2 into en;
      exit when c2%notfound;
      update emp set sal=sal+100 where empno=en;
      commit;
    end loop;
  close c2;
end;

 

 

谢谢观看!

 

版权声明:本文为edcoder原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/edcoder/p/11961782.html