JDBC -访问存储过程

jdbc组件访问存储过程输出参数类型为sys_refcursor的简单示例 一、创建存储过程 创建存储过程 CREATE OR REPLACE PROCEDURE proc_dep_info (datas OUT SYS_REFCURSOR) AS BEGIN OPEN datas FOR SELECT * FROM dept; END proc_dep_info; 二、创建数据库访问组件类DeptDao.java import java.sq... 阅读详情

存储过程:

create  procedure queryempinform (eno in  emp.empno%type ,
                                  pename out  emp.ename%type,
                                  psal out  emp.sal%type,
                                  pjob out  emp.job%type ) 
as
begin
     select ename,sal,job into pename ,psal,pjob from emp where empno = eno;
end;

JDBCUtils类

package Procedure;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class JDBCUtils {
    private static String driver = "oracle.jdbc.driver.OracleDriver";
    private static String  url ="jdbc:oracle:thin:@127.0.0.1:1521:orcl";//127.0.0.1是本机地址,1521是oracle数据库的默认监听端口。
    private static String user="scott";
    private static String password ="tiger";
    //注册数据库的驱动
    static {
        try {
            Class.forName(driver);//加载oracle驱动程序
            //DriverManager.registerDriver(driver);
        } catch (ClassNotFoundException e) {
            throw new ExceptionInInitializerError(e);
        }
    }
    //获取连接
    public static Connection getConnection() {
        try {
            return DriverManager.getConnection(url, user, password);
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return null;

    }
    //释放资源
    public static void release (Connection conn,Statement st ,ResultSet rs) {
        if(rs!=null) {
            try {
                rs.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }finally{
                rs=null;
            }
        }
        if(st!=null) {
            try {
                st.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }finally{
                st=null;
            }
        }
        if(conn!=null) {
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }finally{
                conn=null;
            }
        }
    }
}

测试类

package Procedure;

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.SQLException;

import oracle.jdbc.OracleTypes;


public class TestProcedure {

    public static void main(String[] args) throws SQLException {
        //{call <procedure-name> [(<arg1>,<arg2>,...)]}
        String sql = "{call queryempinform(?,?,?,?)}";//预编译语句

        Connection conn = null;
        CallableStatement call = null;

        try {
            // 得到一个连接
            conn = JDBCUtils.getConnection();
            // 通过连接创建出statement
            call = conn.prepareCall(sql);//实例化预编译语句
            // 对于in输入参数,需要赋值
            call.setInt(1, 7839);//1表示参数的索引,而非列中索引
            // 对于out输出参数,需要申明           
            call.registerOutParameter(2, OracleTypes.VARCHAR);
            call.registerOutParameter(3, OracleTypes.NUMBER);
            call.registerOutParameter(4, OracleTypes.VARCHAR);
            // 执行调用
            call.execute();
            // 取出结果
            String name = call.getString(2);
            double sal = call.getDouble(3);
            String job = call.getString(4);
            System.out.println(name + '\t' + sal + '\t' + job);
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            //释放连接
            JDBCUtils.release(conn, call, null);
        }

    }

}
信奥赛C++提高组csp-s之线段树详解 阅读详情

相关推荐

利用Matlab高效处理Comsol仿真数据的可视化技巧

本文详细介绍了如何将Comsol仿真数据高效导入Matlab并进行专业可视化与后处理。核心内容包括正确的数据导出格式设置、三维矩阵重构方法、二维截面与三维体渲染技巧,以及基于Matlab的定量分析与批处理自动化流程,帮助工程师和科研人员深度挖掘仿真数据价值,提升工作效率。

weixin_29065791的博客 362

JDBC调用存储过程、MySQL触发器

加载驱动Class.forName创建数据库连接conn= DriverManager.getConnection创建处理块CallableStatement cs = conn.prepareCall放入参数prepareCall.setString执行存储过程prepareCall.execute()关闭连接无参数的存储过程 JDBC编码调用 带参数的存储过程定义 调用存储过程 特殊存储过程参数inout JDBC调用 存储过程包含多个查询结果集 JDBC调用 MySQL触发器 触发器是一种数据库对象,

clear_0217的博客 1076

open-mmlab / mmpose安装、使用教程

mmpose安装、使用教程mmpose安装教程1. 安装mmcv-full2. 安装MMPose2. 安装mmdet使用教程1. 预测图片2. 预测视频 mmpose mmpose是商汤旗下有又一款好用的工具箱,主要是针对姿态识别任务开发的,包括人体姿态识别和动物姿态识别。里面继承很多现成的网络可以供大家使用,并且提供了训练好的权重。用户可以更具自己的需求训练自己的数据,或者直接应用他们的结果,反正就是很全面啦!!!! github连接:https://github.com/open-mmlab/mmpos

CharmsLUO的博客 1万+

JDBC调用存储过程

一. JDBC调用存储过程 (1)使用存储过程SQL编写的程序代码,等一段语句和控制流语句。在创建时被编译成机器代码和存储在数据库中的client转让。 存储过程具有以下优势:  1.所生成的机器代码被永久存储在数据库中,client调用时不须要又一次编译,运行起来效率要高一些。  2.存储过程的网络使用效率比等效的SQL 语句要高。 (2)JDBC通过java.sql.Call...

weixin_33939843的博客 243

【同花顺公式编辑教程】第4章 功能函数

本章节主要给出大部分能够运行且常用的同花顺指标编辑器提供的函数。其中,计算类函数不作演示,绘图类函数提供示例及示例运行结果。

LiaoYi2016218的博客 2万+

新手必看:如何用Python模拟电动助力转向系统(EPS)的传感器信号处理

本文详细介绍了如何使用Python模拟电动助力转向系统(EPS)的传感器信号处理流程,包括转向力矩、转向角度和车速信号的生成与滤波处理。通过实战代码示例,帮助开发者理解ECU如何计算助力扭矩,并提供了可视化分析和性能优化建议,适合汽车电子系统开发新手学习。

weixin_28327051的博客 356

JDBC调用Oracle存储过程详解

一、为什么要调用存储过程 1、概述 存储过程说白了就是一堆 SQL 的合并,中间加了点逻辑控制,但是存储过程处理比较复杂的业务时比较实用。比如说:一个复杂的数据操作,如果你在前台处理的话,可能会涉及到多次数据库连接;但如果你用存储过程的话,就只有一次。从响应时间上来说有优势,也就是说存储过程可以给我们带来运行效率提高的好处。 2、优势 存储过程只在创造时进行编译,以后每次执行存储过程都不需再重...

weixin_43094361的博客 7802

WorkBuddy任务对话上下文管理:Token、compact与上下文窗口实战指南

在大语言模型应用中,Token作为文本处理的最小单位,直接决定上下文窗口的消耗速度,而上下文窗口则限定了单次对话可承载的信息总量。当对话超出窗口限制时,compact压缩机制会触发有损摘要,导致关键约束丢失或工具调用结果被稀释。合理管理上下文不仅能提升多步骤任务的稳定性,还能显著降低Token成本与响应延迟。在文档处理、代码开发、多步自动化等场景中,通过主动压缩、状态外置、分段喂入等策略,可有效避免任务后期遗忘、版本混乱等问题。本文围绕WorkBuddy的上下文管理机制,从Token与compact的底层原

weixin_29055699的博客 394

JDBC中调用存储过程

随时随地阅读更多技术实战干货,获取项目源码、学习资料,请关注源代码社区公众号(ydmsq666) 存储过程是一SQL语句和可选控制流语句的预编译集合。编译完成后存放在数据库中,这样就省去了执行SQL语句时对SQL语句进行编译所花费的时间。在执行存储过程时只需将参数传递到数据库中,而不需要将整条SQL语句传递到数...

孤云博客 3403

内存泄漏系列专题分析之二十一:高通相机CamX内存泄漏&内存占用分析--GPU内存拆解

通过上述debug方式,可以看到patch补丁可以顺利debug各种ION内存分布,可以通过它分析ION内存占用问题。同时我们还可以分析GPU内存泄漏问题,同样的方式可以看到所有的GPU内存分布,如果某个GPU内存持续增长,就极有可能内存泄漏,然后更具堆栈信息去分析代码,并解决GPU内存泄漏问题。!!

455

【算能】TPU(张量处理单元)的深度解析

算能(SOPHGO)作为国产AI芯片领域的核心企业,其TPU(张量处理单元)以高能效比与全场景覆盖能力为核心竞争力,专注于边缘计算与行业垂直领域的AI推理加速。

浩瀚之水的专栏 1549

JDBC存储过程步骤

3.获取连接对象,与数据库建立连接conn=DriverManager.getConnection("jdbc:mysql://localhost:3360/数据库名?serverTimezone=UTC","root","密码");System.out.println("总薪资:"+sumSalary);4.获取CallableStatement命令对象,发送存储过程sql语句。//7.执行存储过程sql语句。//8.获取输出参数的值。6.如果输出参数,注册参数,指定输出参数的值。2.加载jdbc驱动。

2401_84069658的博客 513

【系统分析师】写作框架:软件设计模式及其应用

本文围绕"软件设计模式及其应用"展开论述。首先介绍了近三年参与的某软件开发项目背景及个人承担的系统设计工作。其次系统阐述了设计模式的三大分类:创建型(如工厂方法、单例模式)、结构型(如适配器、装饰器模式)和行为型(如观察者、策略模式),重点分析了各类模式的特点和典型应用场景。最后结合项目实践,详细说明了采用的三种设计模式的具体实施过程及效果,包括提高代码复用性、降低耦合度等优势。文章还总结了项目经验,指出存在的不足及改进方向,强调合理运用设计模式对构建高质量软件系统的重要性。全文通过理论

数据知道的博客 5062

06 jdbc访问oracle存储过程和存储函数

在学习了存储过程和存储函数以后,本文将阐述通过jdbc访问访问oracle的存储过程和存储函数。 1 前提约束 oracle已经安装完毕,scott用户也已经解锁【作者使用的是oracle11g】 已安装jdk,并配置环境变量 熟练使用idea 熟练使用sqldeveloper 熟悉存储过程和函数 2 操作 1 以scott登录打开sqldeveloper,创建存储过程和存储...

张力的程序园 145

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

oracle的高阶使用【6】jdbc访问oracle存储过程和存储函数

在学习了存储过程和存储函数以后,本文将阐述通过jdbc访问访问oracle的存储过程和存储函数。 1 前提约束 oracle已经安装完毕,scott用户也已经解锁【作者使用的是oracle11g】 已安装jdk,并配置环境变量 熟练使用idea 熟练使用sqldeveloper 熟悉存储过程和函数 2 操作 1 以scott登录打开sqldeveloper,创建存储过程和存储函数 ...

万和IT教育 301

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

关于JDBC访问存储过程的问题

最近开发一个应用,需要调用一个入参为List的存储过程。 存储过程为: proc_test(p1 OUT Number, p2 IN Number, p3 IN TAB_CUSTOMER); 这个List入参是一个在oracle中自定义的类型的表,如下: CREATE OR REPLACE TYPE TAB_CUSTOMER AS TABLE OF TYP_CUSTOMER; CREATE...

weixin_30856965的博客 102

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

38、使用JDBC访问存储过程

学习目标: 1、掌握使用JDBC调用存储过程 学习过程: 把对数据库的操作封装成为存储过程,然后使用jdbc可以调用这个存储过程,这样可以大大简化jdbc的工作,而且还有很多优点: 提高运行效率。 提高安全性。 减少网络传输。 要调用存储过程,可以使用CallableStatement接口,这个接口专门就是设计用于调用存储过程的。调用的格式是: {call 存储过程名称(?,?)} ...

JavaDayUp 265

jdbc oracle 函数,Oracle系列:(33)JDBC访问Oracle的存储过程和存储函数

1、存储过程1.1、准备SQL--定义存储过程createorreplaceprocedureget_rax(salaryinnumber,raxoutnumber)as--需要交税的钱balnumber;beginbal:=salary-3500;ifbal<=1500thenrax:=bal*0.03-0;elsifbal<=4500...

weixin_34374684的博客 163

jdbc访问oracle存储过程和存储函数

在Oracle中建立一个存储过程 调用存储过程测试一下 步骤二:在项目中src下导入c3p0-config.xml文件,用来连接数据库 步骤三:建立获取连接的JdbcUtil类 步骤四:调用存储过程测试

sinat_35821285的博客 270

使用JDBC API直接调用存储过程

    Java Database Connectivity (JDBC) API 是 J2EE 的一部分,是 Java 语言访问关系数据库的基于标准的首要机制,提供了对数据库访问和缓存管理的直接控制。    JDBC 中的 CallableStatement 对象为所有的关系数据库管理系统 (RDBMS: Relational Database Management System) 提供了一种标...

roomy 167

JDBC 访问 Oracle9i 存储过程

       p2 IN number,        p3 OUT number);    FUNCTION myf_mult     ( p1 IN number,       p2 IN number)     RETURN  number;      FUNCTION myf_rtnrcd     ( p_deptno in number )     RETURN t_rec;--此函数返...

weixin_33800463的博客 78
上一篇: 通过Socket实现TCP编程
下一篇: JDBC - Statement的增删改查
flowser
博客等级 码龄11年 37粉丝 119原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值