首页 > 代码库 > Oracle中的存储过程

Oracle中的存储过程



pl/sql编程语言是Oracle中操作数据库最快的语言,而存储过程本质就是pl/sql,所以通过存储过程来对数据库进行CRUD是最有效的。


不再使用JDBC来进行CRUD操作,因为使用JDBC来进行CRUD操作效率低。


所以,Java通过调用存储过程,来间接调用pl/sql,达到对数据库的CRUD操作。


我们可以把CRUD操作封装到存储过程中,在程序中,调用存储过程即可。


以下是例子:来自于Oracle讲师赵强

--打印Hello World
/*
调用存储过程
1. exec sayHelloWorld();
2. begin
      sayHelloWorld();
      sayHelloWorld();
      sayHelloWorld();
   end;
   /
*/
create or replace procedure sayHelloWorld
as
   --说明部分
begin

    dbms_output.put_line('Hello World');
end;
/



带参数的存储过程

--给指定的员工涨100,并且打印涨前和涨后的薪水

create or replace procedure raiseSalary(eno in number)
as
  --定义变量保存涨前的薪水
  psal emp.sal%type;
begin
  --得到涨前的薪水
  select sal into psal from emp where empno=eno;
  --涨100
  update emp set sal=sal+100 where empno=eno;
  
  --要不要commit??
  
  --打印
  dbms_output.put_line('涨前:'||psal||'   涨后:'||(psal+100));

end;
/

存储函数:和存储过程的区别在于有一个返回值

--查询某个员工的年收入
create or replace function queryEmpIncome(eno in number)
return number
as
     --定义变量保存月薪和奖金
     psal emp.sal%type;
     pcomm emp.comm%type;
begin
     select sal,comm into psal,pcomm from emp where empno=eno;
     --返回年收入
     return psal*12+nvl(pcomm,0);
end;
/

declare 
	income number;
begin
	
	income:=queryEmpIncome(7369);
	dbms_output.put_line(income);
end;
/