`
sjk2013
  • 浏览: 2182530 次
文章分类
社区版块
存档分类
最新评论

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

 
阅读更多

这个是第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等主语言调用过程。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics