ITPub博客

首页 > 数据库 > Oracle > 韩顺平玩转oracle之pl/sql听课笔记《二》

韩顺平玩转oracle之pl/sql听课笔记《二》

原创 Oracle 作者:幕南风 时间:2014-07-03 13:16:43 0 删除 编辑

这个是第25讲,主要关于块和过程的基础性了解。

1 最简单的块之一:
  set serveroutput on --打开输出选项,倘若为off,则put_line()就没有输出
  begin
       dbms_output.put_line(\'hello\');
  end;
  注释:dbms_output是oracle提供的包。包内含过程和函数。put_line就是dbms_output的一个过程

  最简单的块之二:
  declare
      v_ename varchar2(5);--定义字符串变量
      v_sal  number(7,2)
  begin
      select ename,sal into v_ename,v_sal from emp where empno=7788;
      dbms_output.put_line(\'用户名是:\'||v_ename);
  end;

  最简单的块之三:
  问题引入:
  一篇来自chianunix的帖子
  select cdzj into cz from t1 where cn=1;
  例如上面这个select语句,如果找不到cn=1的时候会出现NO_DATA_FOUND,下面就无法执行了,我想让找不到cn=1的时候cn的值为0,然后还能继续执行后面的语句,不知道有没有办法?
  方法:把异常捕获,然后处理
  declare
      v_ename varchar2(5);--定义字符串变量
      v_sal  number(7,2)
  begin
      select ename,sal into v_ename,v_sal from emp where empno=7788;
      dbms_output.put_line(\'用户名是:\'||v_ename);
  exception
      when no_data_found then
      dbms_output.put_line(\'朋友,你的输入有误哦\');
  end;

2 过程
  定义:执行特定操作的程序
  案例之一:
  根据员工名修改员工工资
  create procedure sp_think(spname varchar2,newsal number)  --这边只要指定类型,无须大小
  is
  begin
  update emp set sal=newsal where ename=spname;
  end;
  /
  调用:
  exec sp_think(\'SCOTT\',5000);
  注释:一个存储过程,若在sqlplus 或toad等调用,撑死了,也就是个测试,有意义的做法是,在  java等主语言调用过程。

<!-- Baidu Button BEGIN -->

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/26515977/viewspace-1207688/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: oracle实验:用bbed恢复误删记录的全过程
下一篇: 韩顺平玩转oracle之pl/sql听课笔记《三》
请登录后发表评论 登录
全部评论
腾讯数据库工程师

注册时间:2012-05-10

最新文章