首页 > 数据库 >oracle存储过程

oracle存储过程

时间:2023-09-13 09:46:48浏览次数:51  
标签:存储 String 数据库 参数 oracle 过程 函数

什么是存储过程

  • 存储过程(Stored Procedure )是一组为了完成特定功能的SQL 语句集,经编译后存储在数据库中。用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象,任何一个设计良好的数据库应用程序都应该用到存储过程。
  • 存储过程是由流控制和SQL 语句书写的过程,这个过程经编译和优化后存储在数据库服务器中,应用程序使用时只要调用即可。

存储过程的优点

  1. 存储过程和函数以命名的数据库对象形式存储于数据库当中。存储在数据库中的优点是很明显的,因为代码不保存在本地,用户可以在任何客户机上登录到数据库,并调用或修改代码。
  2. 存储过程和函数可由数据库提供安全保证,要想使用存储过程和函数,需要有存储过程和函数的所有者的授权,只有被授权的用户或创建者本身才能执行存储过程或调用函数。
  3. 存储过程和函数的信息是写入数据字典的,所以存储过程可以看作是一个公用模块,用户编写的PL/SQL程序或其他存储过程都可以调用它(但存储过程和函数不能调用PL/SQL程序)。一个重复使用的功能,可以设计成为存储过程。
  4. 像其他高级语言的过程和函数一样,可以传递参数给存储过程或函数,参数的传递也有多种方式。存储过程可以有返回值,也可以没有返回值,存储过程的返回值必须通过参数带回;函数有一定的数据类型,像其他的标准函数一样,我们可以通过对函数名的调用返回函数值。
  5. 存储过程和函数需要进行编译,以排除语法错误,只有编译通过才能调用。

存储过程的调用

call my_proc('参数1值', '参数2值');
DECLARE
    参数1 VARCHAR2(50) := '参数1值';
    参数2 VARCHAR2(50) := '参数2值';
BEGIN
    my_proc(参数1, 参数2);
END;
  • 使用java
public class CallStoredProcedure {
    public static void main(String[] args) throws Exception {
        String driverName = "oracle.jdbc.driver.OracleDriver";
        String connectionString = "jdbc:oracle:thin:@//localhost:1521/orcl";
        String userName = "USERNAME";
        String password = "PASSWORD";
        String storedProcedure = "my_proc";
        String param1 = "参数1值";
        String param2 = "参数2值";
        Class.forName(driverName);
        Connection con = DriverManager.getConnection(connectionString, userName, password);
        CallableStatement cst = con.prepareCall("{call " + storedProcedure + "(?,?)}");
        cst.setString(1, param1);
        cst.setString(2, param2);
        cst.execute();
        ResultSet rs = cst.getResultSet();
        while (rs.next()) {
            // 处理结果集
        }
        cst.close();
        con.close();
    }
}

参考

https://m.php.cn/faq/519415.html
https://blog.csdn.net/weixin_30819085/article/details/101741824

标签:存储,String,数据库,参数,oracle,过程,函数
From: https://www.cnblogs.com/hasome/p/17698656.html

相关文章

  • 查看oracle函数
    查看用户自定义的资源,如函数、存储过程:SELECT*FROMUSER_PROCEDURES;根据对象名字可以查看其源码:SELECT*FROMUSER_SOURCEWHERENAME='COMPUTERFEE';......
  • AS报错在编译过程中发现了重复的类
    问题描述Task:composite:checkDebugDuplicateClassesFAILEDExecutionfailedfortask':composite:checkDebugDuplicateClasses'.Afailureoccurredwhileexecutingcom.android.build.gradle.internal.tasks.CheckDuplicatesRunnableDuplicateclasskotlin.c......
  • 队列——链式存储
    核心思路:1、首先定义队列结点,包含数据域和指针域;然后定义链式队列,包含队列节点类型的队头和队尾指针。2、初始化:带头结点:给头结点分配内存,然后队头和队尾指针指向头结点,同时队头指针的next指向NULL。不带头结点:队头和队尾指针都指向NULL。3、入队:带......
  • oracle锁
    ORACLETM锁与TX锁联系理论部分:1. DML锁DML锁(也称为数据锁)保证多个用户同时访问的数据的完整性。例如,DML锁可防止两个客户购买在线书商提供的图书的最后一本。DML锁可防止同时发生冲突的DML或DDL操作。对用户的数据操纵,Oracle可以自动为操纵的数据进行加锁,但也可以人为......
  • Oracle 引发No space left on device+扩容Inode
    Oracle引发Nospaceleftondevice+扩容Inode背景很久没遇到数据库存储和文件系统相关的问题,碰到了就复习一下。现象是:某个小应用跑在很老的服务器上【准备淘汰废弃待定中】,突然应用报错,检查发现是数据库查询插入都异常了【自建oracle数据库】,这时候登上数据库服务器,查看一下......
  • 安防监控/视频汇聚/云存储/AI智能视频分析平台EasyCVR下级海康设备无法级联是什么原因
    安防视频监控平台/视频集中存储/云存储/磁盘阵列EasyCVR可拓展性强、视频能力灵活、部署轻快,可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等,以及支持厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等。有用户反馈,在使用下级平台的海康设备级联到视频监控Easy......
  • 视频监控管理平台/视频汇聚/视频云存储EasyCVR安全检查相关问题及解决方法3.0
    智能视频监控系统/视频云存储/集中存储/视频汇聚平台EasyCVR具备视频融合汇聚能力,作为安防视频监控综合管理平台,它支持多协议接入、多格式视频流分发,视频监控综合管理平台EasyCVR支持海量视频汇聚管理,可应用在多样化的场景上,包括城市“一网统管”建设、智慧工地风险预警、智慧工厂......
  • AttributeError: 'int' object has no attribute 'items' 混合数据存储
    data={'2023:09:01':{'867726032728067':68},'2023:09:02':{'867726032728067':68},'2023:09:03':0,'2023:09:04':{'866384064965578':48,'867266067918648':46......
  • 视频监控管理平台/视频汇聚/视频云存储EasyCVR安全检查的相关问题及解决方法3.0
    智能视频监控系统/视频云存储/集中存储/视频汇聚平台EasyCVR具备视频融合汇聚能力,作为安防视频监控综合管理平台,它支持多协议接入、多格式视频流分发,视频监控综合管理平台EasyCVR支持海量视频汇聚管理,可应用在多样化的场景上,包括城市“一网统管”建设、智慧工地风险预警、智慧工厂......
  • 安防监控/视频汇聚/云存储/AI智能视频分析平台EasyCVR下级海康设备无法级联是什么原因
    安防视频监控平台/视频集中存储/云存储/磁盘阵列EasyCVR可拓展性强、视频能力灵活、部署轻快,可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等,以及支持厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等。有用户反馈,在使用下级平台的海康设备级联到视频监控Easy......