oracle 创建函数和存储过程

1、在oracle中,对于一些比较复杂的场景,用sql不好处理的时候,我们一般会使用函数或者存储过程进行处理。记得一点能用sql处理的尽量不用函数和存储过程处理。

2、创建函数

基本结构如下,可参照sf_score_pm的案例。

create or replace function 函数名称(参数 in 参数类型...)
return 返回类型
is
参数列表
begin
...
exception
...
end;
create or replace function sf_score_pm(
p_in_stuid in varchar2,--学号
p_in_courseid in  varchar2 --课程ID
)
return number
is
ls_pm number:=0;
ls_score number:=0;
begin
  --获取该学生的成绩
  select t.score into ls_score from score t
   where t.stuid = p_in_stuid
     and t.courseid = p_in_courseid;
  --获取成绩比该学生高的人数
  select count(1) into ls_pm from score t
   where t.courseid = p_in_courseid
   and  t.score>ls_score;
   --得到该学生的成绩排名
   ls_pm:=ls_pm+1;
   return ls_pm;
exception
  when no_data_found  then
     dbms_output.put_line('该学生的课程:'||p_in_courseid|| '的成绩在成绩表中找不到');
end;

创建函数案例2

根据入参time(日期对象相减获取),格式话计算出天时分秒

CREATE OR REPLACE 
FUNCTION fun_getFormatTime (time NUMBER)
RETURN VARCHAR2 IS time1 VARCHAR2 (32) ;
BEGIN
	select to_char(extract(day from numtodsinterval(time,'day')))||'天'||
					 to_char(extract(hour from numtodsinterval(time,'day')))||'小时'||
					 to_char(extract(minute from numtodsinterval(time,'day')))||'分钟'||
					 to_char(round(to_number (extract(second from numtodsinterval(time,'day')))))||'秒' INTO time1
		from dual;
	if (time > 0) then 
		return time1 ;
	else 
		return '' ;
	end if; END ;

调用函数

SELECT fun_getFormatTime(0.000789) AS"总额" FROM DUAL;

注意项:

(1)、如果end if;和end;是最后两行的话,需要放到一行去。否则会报编译错误。

3、创建存储过程

在存储过程中,与函数不通,没有return的用法,需要返回结果则要在参数配置out参数

案例:

create or replace procedure get_all
 (
 v_id in varchar2,
 v_vid out varchar2
 ) is
 vsal varchar2(100);
 begin

 select vid into vsal from ics_record where id=v_id;
 v_vid := vsal;
 
 end get_all;

4、函数和存储过程在plsql进行测试

在需要的函数或者存储过程上右键测试,弹出如下,输入入参,执行

5、以上均为简单案例,仅供初学者学习!学海无涯苦作舟!继续前行!

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Oracle 提供了丰富的函数存储过程来支持数据库的开发和应用。 函数是一段可以接收参数并返回一个值的代码块,可以在 SQL 查询中使用。以下是几个常用的 Oracle 函数: 1. 字符串函数:如 CONCAT、SUBSTR、UPPER、LOWER 等用于处理字符串的函数。 2. 数值函数:如 ROUND、TRUNC、ABS、MOD 等用于处理数值数据的函数。 3. 日期函数:如 SYSDATE、TO_CHAR、TO_DATE、MONTHS_BETWEEN 等用于处理日期和时间的函数。 4. 转换函数:如 TO_NUMBER、TO_CHAR、TO_DATE 等用于不同数据类型之间的转换。 存储过程是一系列预定义的 SQL 语句和逻辑操作,可以作为一个单元来执行,并且可以接收输入参数和返回输出参数。存储过程可以用于数据库操作和业务逻辑的封装和重复使用。以下是几个与存储过程相关的概念: 1. 存储过程创建和调用:使用 CREATE PROCEDURE 语句创建存储过程,在调用时可以传递参数。 2. 输入参数和输出参数:存储过程可以定义输入参数和输出参数,输入参数用于传递值给存储过程,输出参数用于返回结果给调用者。 3. 条件处理存储过程可以使用条件语句(如 IF、CASE)和循环语句(如 LOOP、FOR)进行条件处理和循环操作。 4. 异常处理存储过程可以捕获并处理异常,使用 EXCEPTION 和 RAISE 语句来处理异常情况。 通过学习和使用 Oracle函数存储过程,你可以更加灵活和高效地处理数据库操作和业务逻辑。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值