PL/SQL编程-存储过程

概念:

        存储过程,简称“存储”或者“存过”,是一种命名的PL/SQL程序块,也是工作中用到最多的命名块,数据库中的大多数程序都是以存储过程的形式存放在数据库里。相较于匿名块,存储过程(及其他命名块)有个非常大的不同:存储过程在开始调用时,可以传入一些输入参数,存储过程会依据输入参数来决定程序如何运行,而且在调用结束时,存储过程还会根据程序运行情况返回一些输出参数。存储过程不能被SQL语句直接调用,需要通过EXECUTE命令调用或通过PL/SQL块调用。因为存储过程是已经在数据库中编译好的程序,所以会比普通的匿名块运行效率更高。

参数:分为IN、OUT和IN OUT三种

1.IN参数(输入参数)

IN模式参数是一种输入类型的参数,用于接收调用方写入的实参。它是数据库最常见也是默认的一种参数。

语法:

CREATE [OR REPLACE] PROCEDURE PRO_NAME (

                           I_NAME1 [IN] DATA_TYPE DEFAULT DEF_VAL,

                           I_NAME2 [IN] DATA_TYPE DEFAULT DEF_VAL,

                                        ...

                                        )

 IS|AS

2.OUT(输出参数)

OUT模式参数是一种输出类型的参数,这个参数在程序调用过程中会被赋予内容,并在调用结束后返回该值。

实际项目中,OUT参数常常用来返回存储过程的执行状态,比如用0表示执行成功,用1表示执行失败。其他类型的返回内容往往是在后续将要学到的存储函数中出现。

OUT参数在调用时需要给予相应数量的变量用来接收返回值,所以在调用带有OUT参数的存储过程时,往往是通过TEST窗口或者PL/SQL匿名块来调用。

Ps:OUT参数在声明时必须加上OUT关键词,否则会被认作IN参数。

3.IN OUT参数(输入输出参数)

IN参数能够用来接收调用方传入的内容,OUT参数能够用来接收存储过程返回的内容,二者各司其职、互不干扰,但从某种角度来说,也是造成了参数浪费。而IN OUT参数则是结合了两者的优势,它既能在程序调用时用来接收传入的内容,在程序运行过程中也能用来接收返回内容,实现了“一参两用”。

Ps:

IN OUT参数在声明时必须加上IN OUT关键词,否则会被认作IN参数;

IN OUT参数无论是在输入时还是输出时,都只有一个数据类型。

实例:

--输入一个日期,返回这个日期所在月的最后一天
CREATE OR REPLACE PROCEDURE SP_LASTDAY(I_DATE VARCHAR2,O_DATE OUT VARCHAR2)
IS
V_ERRM varchar2(50);
BEGIN
  --判断输入格式是否正确
  IF LENGTH(I_DATE)<>8 THEN
    DBMS_OUTPUT.PUT_LINE('输入格式不对,正确格式:YYYYMMDD');
  END IF;
  O_DATE:=LAST_DAY(TO_DATE(I_DATE,'YYYY-MM-DD'));
  DBMS_OUTPUT.PUT_LINE('该日期的月末日期为:'||O_DATE);
  EXCEPTION
    WHEN OTHERS THEN
      V_ERRM:=SQLERRM;
      DBMS_OUTPUT.PUT_LINE(V_ERRM);
END SP_LASTDAY;
--调用这个存储过程
--1
DECLARE
V_DATE VARCHAR2(25);
BEGIN
  SP_LASTDAY('20220101',V_DATE);
END;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值