Oracle 数据库 JDBC调用存储过程和存储函数

oracle学习笔记之存储过程与存储函数 存储过程与存储函数说明:存储函数有返回值!存储过程没有返回值! 指存储在数据库中供所有用户程序调用的子程序叫存储过程、存储函数。 什么时候用存储过程/存储函数 原则:如果只有一个返回值,用存储函数;否则,就用存储过程。 1.创建存储过程 用CREATE PROCEDURE命令建立存储过程。语法如下: create [or replace] PROCEDURE 过程名[(参数列表 阅读详情

一 . Oracle 数据库 JDBC调用存储过程和存储函数

ojdbc:在中央仓库没有
需要手动安装
mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc14
-Dversion=10.2.0.4.0 -Dpackaging=jar
-Dfile=E:\oracle\product\10.2.0\db_1\jdbc\lib\ojdbc14-10.2.0.4.0.jar
–>

com.oracle
ojdbc14
10.2.0.2.0

2.package com.itheima;

import oracle.jdbc.OracleTypes;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import java.sql.*;

public class TestJdbc {

String driver = "oracle.jdbc.driver.OracleDriver";
String url = "jdbc:oracle:thin:@192.168.174.129:1521:orcl";
String username = "scott";
String password = "tiger";
Connection conn;
PreparedStatement pst;
CallableStatement cst;
ResultSet rs;
/**
 * 初始化:加载驱动,创建连接
 */
@Before
public void init() throws Exception {
    Class.forName(driver);
    conn =  DriverManager.getConnection(url,username,password);
}

/**
 * 测试访问存储函数
 * create or replace function getYearSalFun(eno in number) return number
 * {?= call <procedure-name>[(<arg1>,<arg2>, ...)]}
 */
@Test
public void testFunction() throws  Exception{
    //1. sql
    String sql = "{?= call getYearSalFun(?)}";
    //2. 创建Statement对象
    cst = conn.prepareCall(sql);
    // 3.1 设置输入占位符
    cst.setInt(2, 7788);
    // 3.2 设置输出占位符
    cst.registerOutParameter(1, OracleTypes.NUMBER);
    //4. 执行sql语句
    cst.executeUpdate();
    //5. 处理结果集
    int yearsal = cst.getInt(1);
    System.out.println("年薪:"+yearsal);
}

/**
 * 测试存储过程
 * create or replace procedure getEmpsByDeptno(dno in number ,emps out sys_refcursor)
 *{call <procedure-name>[(<arg1>,<arg2>, ...)]}
 */
@Test
public void testProcedureOutCursor() throws  Exception{
    //1. sql
    String sql = "{call getEmpsByDeptno(?,?)}";
    //2. 创建Statement对象
    cst = conn.prepareCall(sql);
    // 3.1 设置输入占位符
    cst.setInt(1, 20);
    // 3.2 设置输出占位符
    cst.registerOutParameter(2, OracleTypes.CURSOR);
    //4. 执行sql语句
    cst.executeUpdate();
    //5. 处理结果集
    Object o = cst.getObject(2);
    rs = (ResultSet) o;
    while(rs.next()){
        System.out.println(rs.getInt("empno")+ rs.getString("ename"));
    }
}

/**
 * 测试存储过程
 * create or replace procedure getYearSal(eno in number ,yearsal out number)
 *{call <procedure-name>[(<arg1>,<arg2>, ...)]}
 */
@Test
public void testProcedure() throws  Exception{
    //1. sql
    String sql = "{call getYearSal(?,?)}";
    //2. 创建Statement对象
    cst = conn.prepareCall(sql);
    // 3.1 设置输入占位符
    cst.setInt(1, 7788);
    // 3.2 设置输出占位符
    cst.registerOutParameter(2, OracleTypes.NUMBER);
    //4. 执行sql语句
    cst.executeUpdate();
    //5. 处理结果集
    int yearsal = cst.getInt(2);
    System.out.println("年薪:"+yearsal);
}

/**
 * 查询员工表中所有的数据
 */
@Test
public void test() throws  Exception{
    //1. sql
    String sql = "select * from emp";
    //2. 创建Statement对象
    pst = conn.prepareStatement(sql);
    // 3. 设置占位符

    //4. 执行sql语句
    rs = pst.executeQuery();
    //5. 处理结果集
    while(rs.next()){
        System.out.println(rs.getInt("empno")+ rs.getString("ename"));
    }
}

/**
 * 关闭资源
 */
@After
public void close() throws SQLException {
    if(rs != null){
        rs.close();
    }
    if(pst != null){
        pst.close();
    }
    if(cst != null){
        cst.close();
    }
    if(conn != null){
        conn.close();
    }
}

}

Oracle 触发器
Oracle 存储函数
Oracle 存储过程
Oracle 游标
Oracle plsql基本语句
Oracle 视图,索引

BUCK电路为何无法实现100%占空比?自举电路原理与替代方案解析 在开关电源设计中,DC-DC转换器是实现电压变换的核心器件,其工作原理基于功率开关管的周期性导通与关断。BUCK(降压)电路作为一种经典拓扑,通过调节开关管的占空比来控制输出电压。然而,其占空比存在理论上限,无法达到100%,这一限制源于高边开关管的驱动需求。为了驱动高边N沟道MOSFET(NMOS),需要栅极电压高于源极电压,而自举(Bootstrap)电路通过利用开关节点电压的跳变,巧妙地生成了这一高压驱动信号。自举电路必须在每个开关周期内存在续流阶段(低边管导通)为电容充电,这从根本上限制了最大占空比 阅读详情

相关推荐

睿尔曼超轻量仿人机械臂--机械臂接口介绍

本文介绍了睿尔曼超轻量仿人机械臂的控制器接口及末端接口。

realman_Rop的博客 3438

存储过程使用dblink问题

按照接口标准创建DBlink后. 准备创建物化视图: CREATE MATERIALIZED VIEW SUBSCRIPTION_TAB BUILD IMMEDIATE REFRESH complete START WITH SYSDATE NEXT trunc(SYSDATE) + 1 AS SELECT * FROM SUBSCRIPTION_TAB@SMGR; 不料想...

IvwvI的专栏 835

从‘裸纤’到成品:手把手拆解光纤阵列(FA)的装配、点胶与端面研磨全流程

本文详细拆解了光纤阵列(FA)从裸纤到成品的全流程,包括装配、点胶与端面研磨等关键工艺。通过实战经验和数据对比,揭示了5G基站、数据中心等场景中FA的精密制造要点与常见故障解决方案,为光通信器件生产提供专业指导。

weixin_42652674的博客 746

Oracle-DB Link简单使用

当用户要跨本地数据库,访问另外一个数据库表中的数据时,本地数据库中必须创建了远程数据库的dblink。通过dblink,本地数据库可以像访问本地数据库一样访问远程数据库表中的数据。首先,查看Global_name参数是true还是False。该参数为true时,你在本地建立的DBLINK的名称必须和远程数据库的全局数据库名的Global_name一致才行。SQL&gt; show paramete...

小楼一夜听春雨,深巷明朝卖杏花 6945

Oracle Primavera P6实战手册:从入门到精通的企业项目管理秘籍

本文详细介绍了Oracle Primavera P6在企业项目管理中的实战应用,从环境配置到高级进度控制技巧,帮助用户从入门到精通。通过WBS设计、资源优化和情景模拟等核心功能,提升项目管理效率。特别适合需要处理复杂项目和多团队协作的企业用户。

weixin_29235923的博客 254

基于51单片机的校园一卡通系统(仿真)

本次设计利用LCD1604设计可视化界面,矩阵按键执行交互,继电器模拟门的开关,系统集成考勤系统、门禁系统、消费系统、充值系统。同时利用LED灯、蜂鸣器进行指示,方便用户查看状态。

MGT_9796的博客 1552

基于Oracle 数据库存储过程的创建及调用

PLSQL编程 概念和目的 什么是PLSQL PL/SQL(Procedure Language/SQL) PLSQL是Oracle 对sql语言的过程化扩展(类似与Basic) 指在SQL命令语言中增加了过程处理语句(如分支,循环等),使SQL语言具有过程处理能力。 程序结构 通过PLSQL Developer 工具的Test Window 创建程序模板或者通过语句SQL window编写...

qq_16183731的博客 2562

Clawdbot安装教程:从零开始到接入飞书

这几天,Clawdbot把整个科技圈都刷屏了。就是这个胖逼小龙虾🦞。不过现在改名叫Moltbot了。原因很简单:被Anthropic告了。Anthropic觉得Clawdbot这名字太像Claude Code的延伸产品,要求改名。真的,Anthropic你这家伙…更离谱的是,因为Clawdbot太火,Mac Mini都被抢断货了。无数人为了用它,疯狂买Mac Mini。我刚打开美团外卖,发现居然没货了???

Maynor的博客 2179

java调用oracle存储过程例子

1,导jar包---ojdbc6.jar 2,建立一个分页存储过程 create or replace procedure my_page(v_in_tableName in varchar2, v_in_pageNow in number,

毅个混蛋的专栏 1430

uniapp - H5网页打包运行报错Failed to load resource: net::ERR_FILE_NOT_FOUND(uniApp打包成H5部署到服务器,打包h5白屏并报错页面空白)

Failed to load resource: net::ERR_FILE_NOT_FOUND,uniapp 坑之打包之后白屏,uniapp打包h5,HBuilderX 打包H5后空白报错 Failed to load resource: net::ERR FILE NOT_FOUND,UNI-APP H5应用白屏(空白页)解决方案,白屏并报错Failed to load resource: net::ERR_FILE_NOT_FOUND,uniapp开发,打包成H5部署到服务器,uniapp打包之后首页

🏆 前端领域优质创作者 3578

【导航理论&实战篇】四足机器人弹簧倒立摆(SLIP)动力学模型

认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长!本文先对四足机器人动力学模型-VMC、SLIP和浮动机体模型做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章四足机器人弹簧加载倒立摆(SLIP)动力学模型是一种用于描述和分析四足机器人在运动过程中动态特性的理论模型。这种模型将四足机器人的腿部简化为弹簧,而机器人的身体则被视为一个倒立摆,这样的抽象使得研究者能够更容易地分析和控制机器人的运动。提示:以下是本篇文章正文内容。

qq_35635374的博客 806

JDBC 调用存储函数 存储过程

JDBC调用存储过程 步骤: 1:通过Connection 对象的prepareCall()方法创建一个CallableStatement对象的实例,    在使用Connection对象的prepareCall()方法时,需要传入一个String类型的字符串,    该方法指明如何调用存储过程。        {?= call [(,, ...)]}    {call [(,, .

worm 1689

c#【保姆级教程】基于System.Text.Json 支持多态类型序列化! 手把手教你实现一个通用的 PolymorphicJsonConverter!

我们需要自己实现一个继承自的转换器,在序列化时记录具体类型,在反序列化时根据类型标识还原成正确的子类对象。public abstract class WorkStepBase { /* 抽象方法等 */ }public class Person : WorkStepBase { /* 实现 */ }public class Product : WorkStepBase { /* 实现 */ }特性说明✅ 自动发现子类无需手动维护类型列表,自动扫描程序集✅ 类名映射。

一个编程的同学 425

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

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

万和IT教育 301

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

JDBC/JPA与Oracle存储过程的数据交互

命名查询 JPA JDBC 存储过程

qq_31856061的博客 1139

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

JDBC-调用函数&存储过程

JDBC_调用函数&存储过程 调用函数用{?=call<procedure-name>[(<args1>,<args2>,...)]} 实例代码 /** * 如何使用 JDBC 调用存储在数据库中的函数或存储过程 */ @Test public void testCallableStatment() { Connectio...

Aqours的博客 686

oracle(42)_PL/SQL_Java 代码调用存储过程和存储函数

PL/SQL Java 代码调用存储过程和函数 Oracle 驱动下载,提取码:k53w 。 注意:版本必须一致,否则无法使用 ● 使用 eclipse 新建一个 Java 工程,然后将上面提供的连接数据库 oracle 的驱动文件直接拷贝到 src 下,之后再都添加到构建路径(build path)中,如图: ● 建包建类 ● 以上操作完整源码: package cn.itcast.pr...

魏宇轩 720

Spring Boot JDBC 存储过程示例

在本教程中,我们将向您展示如何使用弹簧引导 JDBC 从 Oracle 数据库调用存储过程和存储函数。与弹簧启动不同,弹簧启动不会自动创建任何内容,我们必须手动创建它。1.1 创建一个表格并保存4本书进行测试。2.1 返回单个结果的存储过程。

allway2的博客 1007

JAVA调用存储过程、存储函数、调用游标

需要用到的接口 接口 CallableStatement JDK文档对改接口的说明: public interface CallableStatement extends PreparedStatement 用于执行 SQL 存储过程的接口。JDBC API 提供了一个存储过程 SQL 转义语法,该语法允许对所有 RDBMS 使用标准方式调用存储过程。此转义语...

qiudechao1的博客 1523

oracle教程:不带传出参数的存储过程创建及JDBC调用

1、存储过程实际上就是供应用程序调用的一种数据函数对象。2、存储函数与存储过程的区别:存储函数一般用来select查询,且返回的只有一个值,存储过程只能供应用程序调用可以返回多个值。且存储过程没有return返回值,可以通过参数设置一个或者多个返回值。

学亮编程手记 1218

Java调用Oracle数据库的存储过程-入门基础

文章目录1 环境准备2 环境测试3 调用存储过程4 调用存储函数 1 环境准备 开发平台: win10 pro+jdk1.8+idea2019.3+oracle 10g(xp虚拟机)+maven3.5.3 搭建环境: 新建一个maven工程,项目类型直接选择JavaSE。 编写pom文件,填写下面的坐标。 <dependencies> <dependency> <groupId>junit</groupId>

Ur_Eyes_的博客 553

Java调用存储过程和存储函数

文章目录1.JDBC工具类2.JDBC调用存储过程3.JDBC调用存储函数 使用Java语言调用存储过程与存储函数 1.JDBC工具类 &amp;lt;!-- https://mvnrepository.com/artifact/com.github.noraui/ojdbc8 --&amp;gt; &amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;com.github.noraui&amp;lt;/

Life is for sharing的博客 814

oracle 存储过程、存储函数、程序包

oracle数据库对象:表、视图、索引、序列、同义词、存储过程、存储函数等都是数据库对象 存储在数据库中供用户程序 调用的子程序叫:存储过程或者存储函数   相同点:完成特定功能的程序   区别:存储函数用return语句返回值 一般来讲:如果只有一个返回值,则用存储函数,否则(有多个或者没有返回值),使用存储过程 语法: create or replace procedure

世事如棋__2016的博客 726

java调存储过程是否同步_java程序调用存储过程和存储函数

java程序调用存储过程jdbcUtil.java文件package cn.itcast.oracle.utils;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;publ...

weixin_31708209的博客 577

Oracle 存储过程、存储函数、程序包

Oracle数据库对象 表 视图 索引 序列 同义词 存储过程 存储函数等 存储过程、存储函数 存储在数据库中供用户程序调用的子程序 相同点:完成特定功能的程序 区别:存储函数用return语句返回值 注: 一般来讲:如果只有一个返回值,则用存储函数,否则(有多个或者没有返回值),使用存储过程 存储过程 创建存储过程语法: create or replace pro...

好记性不如烂笔头 579

Oracle存储过程,存储函数,包头,包体。

存储过程和存储函数最大的区别就是函数可以通过return来结束,过程不可以。--------------------------存储过程----------------------- ----------in模式下的参数不用赋值,out方式下的参数必须赋值------- ------------无参的存储过程------------- create or replace procedure pro...

qq_40529747的博客 2654
上一篇: Oracle 触发器
下一篇: Maven 私服的下载和安装
LinkHashSet
博客等级 码龄8年 8粉丝 21原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值