PL/SQL

hello world

sys@ORCL> edit
已写入 file afiedt.buf

  1  declare
  2  var_name varchar2(30);
  3  var_id number;
  4  begin
  5  select username
  6  into var_name
  7  from dba_users
  8  where user_id = &var_id;
  9  dbms_output.put_line('hello, '||var_name);
 10* end;
 11  /
输入 var_id 的值:  0
原值    8: where user_id = &var_id;
新值    8: where user_id = 0;
hello, SYS

PL/SQL 过程已成功完成。

sys@ORCL>

输出: dbms_output.put_line()
输入: 在变量名前加一个&实现
:=为赋值=判断是否相等
声明变量时数据类型放右边

%TYPE

声明一个变量与已知变量(或者已知表的某列)类型相同

v_name emp.ename%TYPE;
v_1 number(7,2);
v_2 v_1%TYPE

%ROWTYPE

前缀是表名
便于存储表的一行

游标

游动的光标,用于访问结果集中的一行数据

游标属性

SQL%ISOPEN
SQL%FOUND
SQL%NOTFOUND
SQL%ROWCOUNT

declare
v_employee employees%ROWTYPE;
v1 employees.employee_id%TYPE :=100;
v2 number;
begin
select * into v_employee
from employees where employee_id=v1;
v2:=sql%rowcount;
dbms_output.put_line('选取行数:'||v2);
end;

游标操作

主要3步: 1.open 2.fetch 3.close

示例1 fetch一行数据

declare
cursor c1 is select first_name,last_name,salary from employees order by salary;
v1 c1%ROWTYPE;
begin
open c1;
fetch c1 into v1;
dbms_output.put_line(v1.first_name||' '||v1.last_name||' '||v1.salary);
close c1;
end;

示例2 loop循环遍历结果集

declare
cursor c1 is select first_name,last_name,salary from employees order by salary;
v1 c1%ROWTYPE;
n1 number;
begin
open c1;
loop
    fetch c1 into v1;
    exit when c1%notfound;
    dbms_output.put_line(v1.first_name||' '||v1.last_name||' '||v1.salary);
    n1:=c1%rowcount;
end loop;
close c1;
dbms_output.put_line('总行数'||n1);
end;

示例3 用for循环遍历 不需要open和close

declare
cursor c1 is select first_name,last_name,salary from employees order by salary;
n1 number;
begin
for v1 in c1 loop
    dbms_output.put_line(v1.first_name||' '||v1.last_name||' '||v1.salary);
    n1:=c1%rowcount;
end loop;
dbms_output.put_line('总行数'||n1);
end;

异常处理

TOO_MANY_ROWS
ZERO_DIVIDE

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值