plsql块的实例

本文介绍了PL/SQL块的基本结构及使用方法,包括只包含执行部分的简单块、包含定义和执行部分的复合块,以及包含定义、执行和例外处理部分的完整块。通过实例展示了如何使用dbms_output包输出信息、接收用户输入并处理查询结果,以及如何捕获并处理异常。

实例1  只包括执行部分的pl/sql块

set serveroutput on --打开输出选项
begin
dbms_output.put_line('hello,world!');
end;

相关说明:
dbms_output是oracle所提供的包(类似java的开发包),该包包含一些过程,put_line就是dbms_output包的一个过程。

如果没有set serveroutput on这个来打开输出选项,则oracle中没有任何东西显示出来。

实际显示:
SQL> set serveroutput on;
SQL> begin
  2  dbms_output.put_line('hello,world!');
  3  end;
  4  /
hello,world!
PL/SQL procedure successfully completed

 


实例2  包含定义部分和执行部分的pl/sql块

declare
  v_ename varchar2(5);--定义字符串变量
begin
  select ename into v_ename from emp where empno=&no;
  dbms_output.put_line('雇员名:'||v_ename);
end;
/

相关说明:
& 表示要接收从控制台输入的变量


注意:
1.ename into v_ename的意思就是将ename的值赋给v_ename。
2.输出语句中||其作用和java中的+作用一样。
3.empno=&no;里&后面的no其实是随意的,但是不能不写,其作用就是将在控制台输入的变量赋给哪个值,如&no的意思就是将从控制台输入的值赋给no。


SQL> declare
  2  --定义变量
  3  v_ename varchar2(10);
  4  begin
  5    --执行部分
  6    select ename into v_ename from emp where empno=&aa;
  7    --在控制台显示用户名
  8    dbms_output.put_line('用户名是:'||v_ename);
  9    end;
 10  /
用户名是:SCOTT
PL/SQL procedure successfully completed



--把用户的薪水也显示出来
declare
--定义变量
v_ename varchar2(10);
v_sal number(7,2);
begin
  --执行部分
  select ename,sal into v_ename,v_sal from emp where empno=&aa;
  --在控制台显示用户名
  dbms_output.put_line('用户名是:'||v_ename||' 工资:'||v_sal);
  end;

 


实例3  包含定义部分、执行部分和例外处理部分
为了避免pl/sql程序的运行错误,提高pl/sql的健壮性,应该对可能的错误进行处理,这个很有必要:

1)比如在实例2中,如果输入了不存在的雇员号,应当作例外处理

2)有时出现异常,希望用另外的逻辑处理

相关说明:oracle事先预定义了一些例外,no_data_found就是找不到数据的例外

SQL> declare
  2  --定义变量
  3  v_ename varchar2(10);
  4  v_sal number(7,2);
  5  begin
  6    --执行部分
  7    select ename,sal into v_ename,v_sal from emp where empno=&aa;
  8    --在控制台显示用户名
  9    dbms_output.put_line('用户名是:'||v_ename||' 工资:'||v_sal);
 10    --异常处理
 11    exception
 12      when no_data_found then
 13        dbms_output.put_line('该编号的用户不存在,请重新输入!');
 14    end;
 15  /
该编号的用户不存在,请重新输入!
PL/SQL procedure successfully completed


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值