PLSQL编程入门

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

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

declare
//这是声明部分 

begin
//这是逻辑部分


end;  //结束,
下面我们就来输出一句话, ‘hello word’
declare
str  varchar2(20)  :=  'hello world'     //声明一个字符串变量,并且赋值

begin
dbms_output.put_line(str);

end;

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

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

-- 输出7369的工资

declare
--声明一个变量
str emp.sal%type;    --类型的话,这样写类型就跟表中的sal类型一致了

begin
select sal into str from emp where empno = 7369;
dbms_output.put_line(str);

end;

– 输出7369的部门和姓名

declare
str emp%rowtype;    --这样写就相当于是一个对象类型

begin
select * 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循环演示
declare
i 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我们不用声明变量,因为底层会帮我们声明

declare

begin
 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;

这里写图片描述

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

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值