Oracle:存储过程(一)
一:定义
所谓存储过程(Stored Procedure),就是一组用于完成特定数据库功能的SQL语句集,该SQL语句集经过编译后存储在数据库系统中。在使用时候,用户通过指定已经定义的存储过程名字并给出相应的存储过程参数来调用并执行它,从而完成一个或一系列的数据库操作。
二:创建
Oracle存储过程包含三部分:过程声明,执行过程部分,存储过程异常
(1)无参存储过程语法
1 2 3 4 5 6 7 8 9 10 11 | create or replace procedure NoParPro as --声明语句段,局部变量,游标的声明等等。 ; begin -- 执行语句段,具体业务逻辑。 ; exception --存储过程异常处理语段。 ; end; |
(2)带参存储过程实例
1 2 3 4 5 6 7 8 9 | create or replace procedure queryempname(sfindno emp.empno%type) as sName emp.ename%type; -- 自定义字段名 表名.字段名%type sjob emp.job%type; begin .... exception .... end; |
(3)带参数存储过程含赋值方式
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | create or replace procedure runbyparmeters (isal in emp.sal%type, sname out varchar, sjob in out varchar) --(自定义参数名 in/out 表名.字段名%type)可以 0 -任意多个;IN表示输入参数OUT表示返回值参数 as icount number; --可以给字段类型自定 begin select count(*) into icount from emp where sal>isal and job=sjob; if icount= 1 then .... else .... end if ; exception when too_many_rows then --Oracle存储过程中要用到的标量等 DBMS_OUTPUT.PUT_LINE( '返回值多于1行' ); when others then DBMS_OUTPUT.PUT_LINE( '在RUNBYPARMETERS过程中出错!' ); end; |
三:编译及查看
(1)编译
1 | ALTER PROCEDURE 存储过程名 COMPILE; |
(2)查看
1 2 3 4 | select * from all_source t where t.TYPE = 'PROCEDURE' and t.name = upper( '存储过程名' ) order by t.line; |
四:执行
(1)如果是命令窗口就用exec 存储过程名:
1 | EXEC procedure; --procedure是存储过程名 |
(2)如果是PL/SQL窗口就用 begin 存储过程名 end:
1 2 3 | begin procedure; --procedure是存储过程名 end; |
(3)如果是程序中调用就用 call 存储过程名:
1 | hibernateDao.excuteSqlUpdate( "{Call proc_stuInfo()}" ); //存储过程proc_stuInfo |
五:删除
1 | DROP PROCEDURE 存储过程名; |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?