oracle存储过程和函数

存储过程:

语法:

create [or replace] procedure 存储过程名[(参数 in|out|in out 参数数据类型,...)]

is | as

   声名部分;

begin

   plsql代码块;

   exception

     异常处理;

end;

--无参数存储过程
create or replace procedure p1
is 
begin
   for v in (select * from emp) loop				 		dbms_output.put_line(v.ename||','||v.job||','||v.sal||','||v.deptno);
   end loop;
end;
select * from user_objects where object_type='PROCEDURE';

存储过程的调用:

  1. 在plsql块中调用

直接写名字

  1. call命令调用

call p();

  1. execute命令调用

控制台执行,不打印结果需要运行set serveroutput on;

删除存储过程:

drop procedure p1;

存储过程参数模式:

IN  用于接受调用程序的值。默认的参数模式

OUT  用于向调用程序返回值

IN OUT  用于接受调用程序的值,并向调用程序返回更新的值

--写一个存储过程,根据传入部门编号,查询该部门下的所有员工,并打印员工信息
create or replace procedure p1(v_deptno in number)
is 
begin
   for v in (select * from emp where deptno=v_deptno) loop
      dbms_output.put_line(v.ename||','||v.job||','||v.sal||','||v.deptno);
   end loop;
end;
--根据传入的员工编号,查询出员工信息并以输出参数的方式返回
create or replace procedure p2(v_empno in number,v_emp out emp%rowtype)
is
begin
  
  select * into v_emp from emp where empno=v_empno;
end;

declare
  v emp%rowtype;
begin
  p2(7369,v);
  dbms_output.put_line(v.empno||','||v.ename||','||v.job||','||v.deptno);
end;

函数:

语法:

create [or replace] function 函数名称[(形式参数 参数类型,...)]

return 返回值类型

is

   声名变量;

begin

  plsql代码块;

  return 返回值;

end;

create or replace function f1
return varchar2
is
begin
   return 'hello';
end;

访问函数的方式:

使用 SQL 语句

select f1 from dual;

使用 PL/SQL 块

declare

   v varchar2(30);

begin

   v:=f1;

  dbms_output.put_line(v);

end;
--求二个数的和
create or replace function f1(n number,n2 number)
return number
is
   
begin  
   return n + n2;
end;
--求一个数的阶乘
create or replace function f1(n number)
return number
is
   --声名一个变量保存返回值
   res number(10):=1;
begin
   for i in 1..n loop
      res:=res*i;
   end loop;
   return res;
end;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Oracle存储过程函数是用PL/SQL语言编写的数据库对象,用于实现复杂的业务逻辑和数据处理。存储过程函数可以在数据库中进行定义和调用,提供了很大的灵活性和可重用性。 存储过程是一组SQL语句和控制结构的集合,可以接受输入参数并返回结果。它们可以用于执行常见的数据库操作,如插入、更新、删除数据,以及执行复杂的业务逻辑。存储过程可以在数据库中进行定义,并通过名称来调用执行。 函数是一个具有输入参数和返回值的可执行代码块。它们可以用于计算和返回单个值,例如数学运算、字符串处理或日期操作。函数可以在SQL查询中使用,并且可以像内置函数一样进行调用。 下面是一个示例存储过程的代码: ```sql CREATE OR REPLACE PROCEDURE get_employee_details (p_employee_id IN NUMBER, p_details OUT SYS_REFCURSOR) AS BEGIN OPEN p_details FOR SELECT * FROM employees WHERE employee_id = p_employee_id; END; ``` 上面的存储过程接受一个员工ID作为输入参数,并通过游标将该员工的详细信息返回给调用者。 下面是一个示例函数的代码: ```sql CREATE OR REPLACE FUNCTION calculate_salary_bonus (p_employee_id IN NUMBER, p_bonus_percentage IN NUMBER) RETURN NUMBER AS v_salary NUMBER; BEGIN SELECT salary INTO v_salary FROM employees WHERE employee_id = p_employee_id; RETURN v_salary * p_bonus_percentage / 100; END; ``` 上面的函数接受一个员工ID和奖金百分比作为输入参数,并返回计算后的奖金金额。 存储过程函数可以通过CREATE PROCEDURE和CREATE FUNCTION语句在Oracle数据库中进行定义。一旦定义好,它们可以通过名称进行调用,可以在其他存储过程函数或SQL查询中使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值