oracle存储过程、包、游标 小解

本文详细介绍了存储过程的概念及其在大型数据库系统中的应用。包括存储过程的基本结构、创建方式及如何在Java程序中调用等内容。

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

存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中,经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象,任何一个设计良好的数据库应用程序都应该用到存储过程。

前言:很多人都说存储过程过时了,学这玩意没啥用,你去外面面试的时候根本就不怎么需要使用。其实我觉得呢,技术没有过不过时的,只要能为你的项目提供解决方案那就是有用的技术,技术不能一直追求新,学技术又不是攀比,觉得知道了几个新名词就很牛逼,其实不然。

公司一个项目里需要用到存储过程,而我正好又负责这一模块,所以就需要开始学习存储过程等知识。对我而言,普通的sql语句是能看懂能写出来的,对于存储过程的认识也只是停留在知道存储过程也是由sql语句组成,仅此而已。对于同事说保存在数据库中的Sql语句,就显得更迷茫了。怎么保存的,保存在哪个地方,怎么找到,怎么使用,java程序又是怎么调用的……等等一系列的问题出现在我的脑袋里。

下图是pl/sql developer中存储过程,存储函数等保存的结构位置:
结构图

存储过程格式:

create or replace procedure procedure_name (Name1 in type,Name2 out type)   --定义了一个输入变量和一个输出变量
as 
--此处可定义变量
begin
--pl/sqlend procedure_name;

包头格式:

--包头中只声明定义,不写具体逻辑代码,等在包体中实现
create or replace package package_name as 
  --定义一个游标类型
  type t_cursor is ref cursor;
  --声明一个存储过程,我这里是带参数的,不带参数直接不写括号内的即可
  procedure procedure_name(a in number,b out t_cursor);
  end package_name;

包体格式:

--包体需要实现包头中声明的所有的方法
 create or replace package body package_name as
 procedure procedure_name(a in number,b out t_cursor) as
 begin
 --因为b 是一个游标类型,使用之前请open一下它 
   open b for select * from emp where userno = a;
 end procedure_name;
 end package_name;

写好了包头包体之后,保存并编译它。然后在java程序中调用它。
先就此搁笔,过一两天再完成剩余部分。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值