oracle过程的开发

[复制链接]
查看11 | 回复1 | 2008-12-18 08:08:30 | 显示全部楼层 |阅读模式
本人正在自学oracle10g,请教各位:
1 create or replace procedure add_employee(eno number,
2 name varchar2,sal number,job varchar2 default 'CLERK',
3 dno number)
4 is
5 e_integrity exception;
6 pragma exception_init(e_integrity,-2291);
7 begin
8 insert into emp(empno,ename,sal,job,deptno) values
9 (eno,name,sal,job,dno);
10 exception
11 when dup_val_on_index then
12 raise_application_error(-20000,'雇员号不能重复');
13 when e_integrity then
14 raise_application_error(-20001,'部门号不存在');
15 end;
16/
第2行的job varchar2 default 'CLERK'和第6行的pragma exception_init(e_integrity,-2291);是什么意思?
另:开发过程是输入参数IN和输出参数OUT又说明区别呢?该怎么用?
create or replace procedure query_employee
(eno number,name out varchar2,salary out number)
is
begin
select ename,sal into name,salary from emp where empno=eno;
exception
when no_data_found then
raise_application_error(-20000,'该雇员不存在');
end;
/
当调用这个过程的时候为什么还要现执行var name varchar2(10),
var salary number?
谢谢……

回复

使用道具 举报

千问 | 2008-12-18 08:08:30 | 显示全部楼层
1. pragma exception_init(e_integrity,-2291); 是用户自定义异常,看下面调用的就是部门号不存在的时候发生这个异常2. IN 是输入餐厨,OUT是输出参数,比如你输入a =1,经过计算得到b =2,那么a 就是in,b就是out3.这个存储过程是有参数的,当你在sqlplus下面执行程序的时候,如果你不定义你要执行的参数,存储过程怎么知道是多少呢?当然你用plsql,你只要输入beginquery_employee (eno,name,salary);end;就可以得到结果了...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行