sql 存储过程 函数

本文深入探讨了PL/SQL中存储过程和函数的创建及使用方法,包括详细的语法介绍、异常处理机制以及具体实例,展示了如何通过存储过程进行数据库操作和利用函数返回计算结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、 创建存储过程
1)语法
CREATE [OR REPLACE] PROCEDURE procedure_name

[argument[{IN|OUT|IN OUT}] TYPE]

{IS|AS}

  <类型、变量的说明>

BEGIN

  <执行部分>

EXCEPTION

  <可选的异常错误处理程序>

END;
//////////////////////////////////////////////////////////////////////////

##创建过程

SQL> create or replace procedure delemp(v_empno in emp.empno%type) is

  2    no_result exception;

  3  begin

  4    delete from emp where empno = v_empno;

  5    if sql%notfound then

  6      raise no_result;

  7    end if;

  8    dbms_output.put_line('employee number' || v_empno || 'was deleted!');

  9  exception

 10    when no_result then

 11      dbms_output.put_line('no row found!');

 12    when others then

 13      dbms_output.put_line('other error!');

 14  end delemp;

##执行存储过程 

 exec delemp(999);
//////////////////////////////////////////////////////////////////////////



2、 创建函数
1)语法
CREATE [OR REPLACE] FUNCTION function_name

[(argument[{IN|OUT|IN OUT}] TYPE,

...

argument[{IN|OUT|IN OUT}] TYPE)]

RETURN return_type {IS|AS}

function_body

/////////////////////////////////////////////////////////////////////

2)示例
##创建函数

SQL> create or replace function get_salary(dept_no number, v_num out number)

  2    return number is

  3    v_sum number;

  4  begin

  5    select sum(sal), count(*)

  6      into v_sum, v_num

  7      from emp

  8     where deptno = dept_no;

  9    return v_sum;

 10  exception

 11    when no_data_found then

 12      dbms_output.put_line('你需要的数据不存在!');

 13    when too_many_rows then

 14      dbms_output.put_line('程序运行错误!请使用游标');

 15    when others then

 16      dbms_output.put_line('发生其他错误!');

 17  end get_salary;

 18  /

 

Function created.

 

##调用函数(注:函数不能单独调用,只能在语句中调用)

SQL> declare

  2    v_num number;

  3    v_sum number;

  4  begin

  5    v_sum := get_salary(30,v_num);

  6    dbms_output.put_line('30 department sum salary is '||v_sum||' employee: '||v_num);

  7  end;
//////////////////////////////////////////////////////////////////////
 


 









 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值