- 时间:2022-01-17 02:10 编辑: 来源: 阅读:
- 扫一扫,手机访问
摘要:Oracle存储过程和存储函数创建方法(详解)
select * from emp;
[b]-----------------存储过程------------------------[/b]
[b]--定义[/b]
create[or replace] procedure 存储过程名称(参数名 [in]/out 数据类型)
is/as
begin
[b]--逻辑表达式 [/b]
end [存储过程名称];
[b]--定义存储过程计算年薪,并答应输出[/b]
create or replace procedure proc_salyears(v_no in number)
is
sal_years number(9,2);
begin
[b]--计算年薪[/b]
select sal*12+nvl(comm,0) into sal_years from emp where empno=v_no;
[b]--输出[/b]
dbms_output.put_line(sal_years);
end;
[b]--调用存储过程[/b]
[b] 方式1:[/b]
call proc_salyears(7788);
[b]方式2:[/b]
begin
proc_salyears(7369);
end;
[b]--out参数的存储过程[/b]
[b]--计算年薪并返回 [/b]
create or replace procedure proc_salyears(v_no in number,sal_years out number)
is
begin
[b]--计算年薪[/b]
select sal*12+nvl(comm,0) into sal_years from emp where empno=v_no;
end;
[b]--调用存储过程[/b]
declare
v_sal number(9,2);
begin
proc_salyears(7876,v_sal);
dbms_output.put_line(v_sal);
end;
[b]-----------------存储函数------------[/b]
[b]--定义[/b]
create or replace function 存储函数名(参数名 in/out 数据类型)
return 数据类型
is|as
begin
return 具体的数据;
end [存储函数名称];
--定义存储函数名计算年薪
create or replace function fun_salyears(f_no number)
return number
is
sal_years number(9,2);
begin
select sal*12+nvl(comm,0) into sal_years from emp where empno=f_no;
return sal_years;
end ;
--使用存储函数
declare
sal_yeats number(9,2);
begin
sal_yeats := fun_salyears(7876);
dbms_output.put_line(sal_yeats);
end;
--可简写
begin
dbms_output.put_line(fun_salyears(7369));
end;
[b]--------存储过程和存储函数的区别--------[/b]
存储过程多用于项目之间的数据共享,存储函数多被存储过程调用.
存储函数可以再sql语句中调用,存储过程不能.