Oracle简单学习二

1、PLSQL编程

(1)PLSQL:Procedural Language/SQL(过程化sql语言)是对sql的一个扩展,让我们能够用sql写一些逻辑代码,比如循环,判断等!
(2)语法:
A、声明变量:declare 变量名 变量类型 :=初始化值
B、输出语句:dbms_.put_linne()
如:

declare 
  i varchar2(20) := 'melo';
begin
  dbms_output.put_line(i);
end;

结果:
在这里插入图片描述
C、引用类型的变量: 变量名 表名%rowtype 表啊是某个表中一行数据的数据类型
如a:查询1008的工资
代码:

declare
 vsal emp.sal%type; --表示某一列的数据类型
begin
  --将查询结果赋值给vsal
  select sal into vsal from emp where empno = 1008;
  dbms_output.put_line(vsal);
end;

结果:
在这里插入图片描述
b:查询1007的姓名和工资

declare
  em emp%rowtype;
begin
  select * into em from emp where empno = 1007;
  dbms_output.put_line('姓名:'||em.ename||', 工资:'||em.sal);
end;

结果:
在这里插入图片描述
D、条件判断:
if xxx then xxx else if xxx then xxx else xxx end if;
如:根据不同年龄输出不同信息
代码:

declare
  age int := 40;
begin
  if age<18
  then dbms_output.put_line('小屁孩');
  elsif age < 30
  then dbms_output.put_line('年轻人');
  else
  dbms_output.put_line('不知道什么人');
  end if;
end;

结果:
在这里插入图片描述
E、PLSQL的循环:
A、while:
while 条件 loop xxxxxx end loop;
B、for
for 变量名 in [reverse] 起始值…最终值 loop xxxxxxx 修改变量语句 end loop;
C、loop:
loop exit when 条件 xxxxxxx 修改变量语句 end loop;

如:输出1-10:

--输出1到10
--while循环
declare
  i int :=1;
begin
  while i <=10
    loop
      dbms_output.put_line(i);
      i:= i+1;
    end loop;
end;

--for循环
declare
  i int :=1;
begin
  for i in 1..10
    loop
      dbms_output.put_line(i);
    end loop;
    
end;

--loop循环
declare
  i int :=1;
begin
  loop exit when i>10;
    dbms_output.put_line(i);
    i:=i+1;
  end loop;
end;

结果都是一样的:
在这里插入图片描述

2、游标

游标是用来操作查询结果集的,相当于jdbc中的ResultSet
(1)语法(普通游标):cursor 游标名[参数名 参数类型] is 查询结果集
(2)操作步骤:
声明游标 ——> 打开游标(open 游标名) ——> 从游标中取数据(fetch 游标名 into 变量 : ) ——> 关闭游标(close 游标名)

如:游标查询所有员工的姓名和工资

--用游标查询所有员工
declare
  --声明游标
  cursor cur is select * from emp;
  --声明变量,记录一行数据
  vrow emp%rowtype;
begin
  --打开游标
  open cur;
  --从游标中取数据
  --循环取
  loop 
    fetch cur into vrow;
    exit when cur%notfound;
    dbms_output.put_line('姓名:'||vrow.ename||',工资:'||vrow.sal);
  end loop;
  --关闭游标
  close cur;
end;

结果:
在这里插入图片描述
再比如查询指定部门的员工姓名和编号:

declare
  --声明游标
  cursor cur (dno number) is select * from emp where deptno = dno;
  --声明变量,记录一行数据
  vrow emp%rowtype;
begin
  --打开游标
  open cur(20);
  --从游标中取数据
  --循环取
  loop 
    fetch cur into vrow;
    exit when cur%notfound;
    dbms_output.put_line('姓名:'||vrow.ename||',工资:'||vrow.sal);
  end loop
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值