您现在的位置是:群英 > 数据库 > 关系型数据库
Oracle存储过程是什么?怎样创建存储过程?
Admin发表于 2021-11-08 15:43:521220 次浏览

    这篇文章主要简单的介绍一下Oracle存储过程,对新手学习和理解Oracle存储过程是什么及怎样创建存储过程都有一定的帮助,感兴趣的朋友可以了解看看,希望大家阅读完这篇文章能有所收获,接下来跟随小编一起来学习一下吧。

    在oracle中,存储过程是为了完成特定功能的SQL语句集,编译后存储在数据库中,用户通过指定存储过程名字并给出参数来执行它;语法格式为“create or replace procedure 存储过程名”。

    Oracle存储过程包含三部分:过程声明,执行过程部分,存储过程异常(可写可不写,要增强脚本的容错性和调试的方便性那就写上异常处理)

    存储过程它的使用主要是完成一项复杂的功能,如果直接使用sql语句则每次都需要进行编译,而存储过程只需要编译一次,以后直接调用即可,它的语法为

create or replace procedure procedure_name
as
begin
   extention;
end;
/

    行1:

  CREATE OR REPLACE PROCEDURE 是一个SQL语句通知Oracle数据库去创建一个叫做skeleton存储过程, 如果存在就覆盖它;

    行2:

  IS关键词表明后面将跟随一个PL/SQL体。

    行3:

  BEGIN关键词表明PL/SQL体的开始。

    行4:

  NULL PL/SQL语句表明什么事都不做,这句不能删去,因为PL/SQL体中至少需要有一句;

    行5:

  END关键词表明PL/SQL体的结束

    存储过程创建语法:

 create or replace procedure 存储过程名(param1 in type,param2 out type) 
as 
变量1 类型(值范围); --vs_msg   VARCHAR2(4000); 
变量2 类型(值范围);
Begin
Select count(*) into 变量1 from 表A where列名=param1;
 
    If (判断条件) then
       Select 列名 into 变量2 from 表A where列名=param1;
       Dbms_output。Put_line(‘打印信息’);
    Elsif (判断条件) then
       Dbms_output。Put_line(‘打印信息’);
    Else
       Raise 异常名(NO_DATA_FOUND);
    End if;
Exception
    When others then
       Rollback;
End;

    注意事项:

    1, 存储过程参数不带取值范围,in表示传入,out表示输出

    类型可以使用任意Oracle中的合法类型。

    2, 变量带取值范围,后面接分号

    3, 在判断语句前最好先用count(*)函数判断是否存在该条操作记录

    4, 用select 。。。into。。。给变量赋值

    5, 在代码中抛异常用 raise+异常名

    现在大家对于Oracle存储过程级创建应该都有所了解了,有需要的朋友可以参考学习,希望对大家学习Oracle数据库有帮助,想要了解更多Oracle存储过程的内容,大家可以关注群英网络其它相关文章。

文本转载自PHP中文网

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。

标签: Oracle存储过程
相关信息推荐
2022-05-14 14:58:22 
摘要:在oracle中,nvl()函数用于从两个表达式返回一个非null值,语法为“nvl(表达式1,表达式2)”;若表达式1的计算结果为null值,则该函数返回表达式2的结果,若表达式1的计算结果不是null值,则返回表达式1的结果。
2022-05-11 11:57:25 
摘要:在oracle中,可以利用unpivot()函数实现列转行,其SQL语句为“select 字段列表 from 数据集 unpivot(自定义列名/*列的值*/ for 自定义列名 in (列名列表))”。
2022-08-05 17:50:20 
摘要:在oracle中,可以利用“select round(sum(BYTES)/1024/1024,2)||'M' from dba_segments where segment_name='表名'”语句查询表的大小。
群英网络助力开启安全的云计算之旅
立即注册,领取新人大礼包
  • 联系我们
  • 24小时售后:4006784567
  • 24小时TEL :0668-2555666
  • 售前咨询TEL:400-678-4567

  • 官方微信

    官方微信
Copyright  ©  QY  Network  Company  Ltd. All  Rights  Reserved. 2003-2019  群英网络  版权所有   茂名市群英网络有限公司
增值电信经营许可证 : B1.B2-20140078   粤ICP备09006778号
免费拨打  400-678-4567
免费拨打  400-678-4567 免费拨打 400-678-4567 或 0668-2555555
微信公众号
返回顶部
返回顶部 返回顶部