PLSQL编程入门

来源:互联网 发布:花店网络营销策划案 编辑:程序博客网 时间:2024/05/24 05:34

Procedure Language主要是oracle对语言能力的增加,让if语言有了条件判断,和for循环的处理能力,

语法 :主要分为俩部分,声明部分,逻辑部分

declare//这是声明部分 begin//这是逻辑部分end;  //结束,

下面我们就来输出一句话, ‘hello word’

declarestr  varchar2(20)  :=  'hello world'     //声明一个字符串变量,并且赋值begindbms_output.put_line(str);end;

输出结果如下
这里写图片描述

学习玩输出语句后,我们做一个小练习

-- 输出7369的工资declare--声明一个变量str emp.sal%type;    --类型的话,这样写类型就跟表中的sal类型一致了beginselect sal into str from emp where empno = 7369;dbms_output.put_line(str);end;

– 输出7369的部门和姓名

declarestr emp%rowtype;    --这样写就相当于是一个对象类型beginselect * into str from emp where empno = 7369;dbms_output.put_line(str.empno||'     '||str.ename);--   '||' 符号主要是用来拼接字符串的 end;

输出结果如下
这里写图片描述

if条件判断

语法  if  条件 than elsif 条件  than else 

– 根据不同年龄输出信息

declare    age number := &aaa;    --这样写的意思相当是 scanner,值是用户输入的begin    if age > 18 then        dbms_output.put_ling('未成年人');    elsif age > 48 then        dbms_output.put_line('中年人');    else          dbms_output.put_line('长辈');    end if;end;

运行结果如下
这里写图片描述

输出结果如下, 想必大家猜到我输入的是什么了,永远十八岁,
这里写图片描述

三种循环

  1. while循环
  2. for循环
  3. loop循环

while循环演示

declarei number := 1;begin    while i <= 10 loop        dbms_output.out_line(i);        i := i + 1;    end loop;end;

运行结果如下
这里写图片描述

for循环

语法

 for 变量名 in 起始值..结束值  loop   end loop; 

使用for我们不用声明变量,因为底层会帮我们声明

declarebegin for i in 1..10 loop    dbms_output.put_line(i); end loop;end;

运行结果如下

这里写图片描述

loop循环

语法     loop          输出语句        --根据条件来退出循环         exit when 条件     end loop;

代码演示

declare n number := 1;begin  loop    dbms_output.put_line('pipixia :'||n);     exit when n>10;      n := n+1;   end loop;end;

输出结果 如下

这里写图片描述


游标

相当是对结果集的封装, 相当于是jdbc中的ResultSet

语法:

声明 游标
cursor 游标名 is 查询语句
cursor 游标名(参数名 参数类型) is 查询语句 where empno=参数名

demo

declare--声明游标cursor demo is select * from emp;--声明变量 vrow emp%rowtype;begin  --打开游标  open demo;  loop    fetch demo into vrow;    exit when demo%notfound;    dbms_output.put_line(vrow.ename);    end loop;  --关闭游标  close demo;end;

查询结果如下
这里写图片描述

需求
– 输出指定部门的员工信息

declare--声明游标cursor demo(v_deptno number ) is select * from emp where  deptno = v_deptno; --声明常量v_row emp%rowtype;begin  --开启角标   open demo(10);       --开启循环        loop         --移动角标          fetch demo into v_row;           --如果没有查询到,就退出循环         exit when demo%notfound;         --输出打印          dbms_output.put_line(v_row.ename);       end loop;  --循环末尾   --关闭角标  close demo;end;

输出结果如下

这里写图片描述


游标练习

– 按照职位涨工资,总裁涨1000 , 经理涨800 , 其他人涨400

/*
遍历所有员工,如果是总裁,涨1000;
如果是经理 涨800
群众涨400
*/

declare--声明游标 cursor demo is select * from emp;--声明常量v_row emp%rowtype;begin  --开启游标   open demo;       loop            --移动角标           fetch demo into v_row;           --如果没有发现就退出循环           exit when demo%notfound;           --如果工作是 涨800           if v_row.job = 'MANAGER' then             update emp set sal = sal + 800 where empno = v_row.empno;             --如果工作是boss 涨1000            elsif v_row.job = 'PRESIDENT' then              update emp set sal = sal + 800 where empno = v_row.empno;              else                 --涨400                  update emp set sal = sal + 400 where empno = v_row.empno;           end if;       end loop;  --关闭游标  close demo;  --提交事务   commit;end;

扩展: 使用for循环遍历游标

declare  --声明游标  cursor demo is select * from emp;begin --遍历游标  for v_row in demo loop;    dbms_output.put_line(v_row.ename);end loop;

这里写图片描述

以上就是一些简单的知识,多敲敲就会了,,每个语言刚开始都是痛苦的,,,

原创粉丝点击