java结构化参数调用存储过程

Java调用MySQL存储过程实战指南 MySQL存储过程是一组预编译的SQL语句集合,存储在数据库中,可以通过指定名称进行调用。它不仅提升了代码的复用性,还增强了数据库操作的安全性与性能。与传统的SQL语句相比,存储过程在执行效率上更具优势,尤其适用于处理复杂的业务逻辑。其结构通常包括定义、声明、执行和结束几个部分,允许参数传入与返回,支持条件判断与循环控制。通过将业务逻辑下沉至数据库层,减少了应用与数据库之间的通信开销。此外,存储过程具备良好的封装性和权限控制能力,有助于提升系统的可维护性与安全性。 阅读详情
  1. oracle PL/SQL定义结构化类型
    CREATE OR REPLACE TYPE type_specialPax AS OBJECT

    -- 定义特服旅客对象。
    -- HHB
    -- 2013-05-15
    (
      paxName              VARCHAR2 (150 ), --  姓名
      psgGender            VARCHAR2 (150 ), --  性别
      flightNo             VARCHAR2 (150 ), --  航班号
      orgCityAirp          VARCHAR2 (150 ), --  机场
      dstCityAirp          VARCHAR2 (150 ), --  到达机场
      lclDptDate           Date ,          --  当地日期1
      lclDptDate_e         Date ,          --  当地日期2
      specialCode          VARCHAR2 (150 ), --  特服编码
      idNo                 VARCHAR2 (150 ), --  证件号
      specialAuditResult   VARCHAR2 (150 ), --  审核结果
      isCd                 VARCHAR2 (150 ),  --
      isOther              VARCHAR2 (150 ),  --
      pnr                  VARCHAR2 (150 ),  --  PNR
      speType              VARCHAR2 (150 ),  --  特殊类型
      isCancel             VARCHAR2 (150 ),  --  是否取消
      localStd             Date ,           --  当地时间1
      localStd2            Date ,           --  当地时间2
      sortStr              VARCHAR2 (2000 ), --  排序列
      orderStr             VARCHAR2 (150 ),  --  排序
      page                 number ,         --  页码
      rowSize              number           --  行数
    )

  2. 定义包含自定义类型的参数的存储过程
    CREATE OR REPLACE PROCEDURE prc_querySpecialPax
    (
           paxInfo                 type_specialPax,
           sqlStrRe  out            varchar2,
           outcursor out            sys_refcursor
    ) as
    startIndex number;
    endIndex   number ;
    maxRow     number ;
    sqlStr      varchar2 (32767 );
    sqlStr2     varchar2 (32767 );
    sqlStr3     varchar2 (32767 );
    begin
    ........
    end prc_querySpecialPax;

  3. Java调用存储过程

String sql= "call prc_querySpecialPax(?,?,?)" ;
OracleConnection con = ( OracleConnection) mydataSource .getConnection();
StructDescriptor structdesc = new StructDescriptor( "TYPE_SPECIALPAX" , con);
Object[] paramObj = new Object[21];
paramObj[0]=pax.getPaxName()+ "" ;
paramObj[1]=pax.getPsgGender()+ "" ;
paramObj[2]=pax.getFlightNo()+ "" ;
paramObj[3]=pax.getOrgCityAirp()+ "" ;
paramObj[4]=pax.getDstCityAirp()+ "" ;
paramObj[5]=pax.getLclDptDate()== null ?null : new Date(pax.getLclDptDate().getTime());
paramObj[6]=pax.getLclDptDate_e()== null ?null : newDate(pax.getLclDptDate_e().getTime());
paramObj[7]=pax.getSpecialCode();
paramObj[8]=pax.getIdNo()+ "" ;
paramObj[9]=pax.getSpecialAuditResult()+ "" ;
            paramObj[10]=pax.getIsCd()+ "" ;
            paramObj[11]=pax.getIsOther()+ "" ;
            paramObj[12]=pax.getPnr()+ "" ;
            paramObj[13]=pax.getSpeType()+ "" ;
            paramObj[14]=pax.getIsCancel()+ "" ;
            paramObj[15]=pax.getLocalStd()== null ?null : newDate(pax.getLocalStd().getTime());
            paramObj[16]=pax.getLocalStd2()== null ?null : newDate(pax.getLocalStd2().getTime());
            paramObj[17]=pax.getSort()+ "" ;
            paramObj[18]=pax.getOrder()+ "" ;
            paramObj[19]=page;
            paramObj[20]=rows;
            STRUCT s= new STRUCT(structdesc, con, paramObj);
            OracleCallableStatement proc=(OracleCallableStatement)con.prepareCall(sql);
            ResultSet rs= null ;
            proc.setSTRUCT(1, s);
            proc.registerOutParameter(2, Types. VARCHAR );
             
            proc.registerOutParameter(3, oracle.jdbc.OracleTypes.CURSOR );
            proc.execute();
            String sqlSt=proc.getString(2);
            
            rs=(ResultSet)proc.getObject(3);
            List<AutoSpecialPaxInfo> paxinfos= new ArrayList<AutoSpecialPaxInfo>();
            AutoSpecialPaxInfo paxInfo= null ;
             while (rs.next())
            {
               .....
            }
            rs.close();
            con.close();

xmljava系统源码-database-oop:结构化数据存储系统的面向对象封装 xml java系统源码 结构化数据存储系统的面向对象封装 博客地址: 自动构建: 欢迎参与:请骚扰 当前参与人:、、、、 预计封装的数据库 arangodb db2 elasticsearch[完成初步] mongodb[进行中] mysql oracle[进行中] postgresql redis[进行中] sqlite[完成初步] sqlserver xml[进行中] access[完成初步] 封装要求 面向对象封装 通过对象可以抽象存储结构(最好包括SQL-Table、Redis-Key或NoSQL-Index等存储结构的自动生成) 通过对象实现数据基本增删查改操作,最好可以扩展丰富的查询功能 封装后要求使用方便,不暴露与数据库相关的操作 配置信息简洁(最好只包含连接数据库相关的配置),尽量不用XML配置 最好有默认配置,有抽象默认基本方法和服务 只能用Java原生的JDBC和对应数据库官方API 不能使用Spring框架,但是支持在Spring中使用 不能使用Mybatis、Hibernate等数据库封装框架 可以使用简单的工具包的Maven依赖 每个存储系统的封装独立,友好 立即下载

相关推荐

Mplus实战:如何用潜在类别分析(LCA)快速搞定心理学数据分类?

本文详细介绍了如何运用Mplus软件进行潜在类别分析(LCA),以快速处理心理学数据并识别内部异质性群体。文章从数据准备、Mplus语法编写、模型拟合与选择,到结果解读与高级应用(如纳入协变量),提供了完整的实战指南,帮助研究者从变量视角转向个体视角,有效挖掘数据中的潜在子类别。

weixin_28318011的博客 411

java面向对象程序设计第三版耿祥义pdf_java基础知识干货——封装

很多java初学者,在学到Java面向对象方面的知识点的时候,会觉得这块的知识点真的蛮绕的,一个知识点一个知识点的往外冒,对于初学者来说区分构造器和方法就花费了一整天的时间。现在小编带大家重新过一遍知识点~先背下来一个理念: 面向对象程序设计是将数据放在第一位的,然后再考虑操作数据的方法。之前,再学习Java的优越性的时候,我们知道了Java是一种面向对象设计的程序设计语言。那到底什么是面向对象程...

weixin_39797381的博客 5811

Ubuntu单系统安装全攻略:从删除Windows到UEFI引导设置(避坑指南)

本文提供Ubuntu单系统安装的完整指南,涵盖从安全删除Windows系统到UEFI引导设置的详细步骤。通过专业工具准备、分区方案设计、引导加载器配置等关键环节,帮助用户避免常见安装问题,实现纯净高效的Ubuntu单系统环境。特别强调UEFI引导的深度配置与安装后的性能优化,适合希望彻底转向Linux的用户。

weixin_29210727的博客 410

xml如何循环解析相同节点的第二个字段_结构化数据、半结构化数据(XML)和非结构化数据...

《XML实用大全》pdf版,需要请留言,私信:“XML实用大全”,自行下载图1 XML 实用大全结构化的数据是指可以使用关系型数据库表示和存储,表现为二维形式的数据。一般特点是:数据以行为单位,一行数据表示一个实体的信息,每一行数据的属性是相同的。举一个例子:id name age gender1 lyh 12 male2 liangyh 13 female3 liang 18 male1234所...

weixin_33293612的博客 618

图数据挖掘 ECC K-core core number truss number clique

K-core:什么叫k-core,给定一个正整数k(k>=0),k-core是一个G的最大子图(也就是说k-core是一个图的限制),将这个子图定义为Hk,对于Hk中的每个顶点v,他的度数都是大于等于k的。 k-core是内嵌的,如下图所示,集合{ABCD}是H3,也就是3-core的子图。而集合{ABCDE}是H2,也就是2-core的子图,集合{ABCDEGF}是H1,也就是1-core的子图,而从集合的角度来讲H3<H2<H1。 core number:什么叫kcor

weixin_45193103的博客 1686

超详细版!Obsidian+Claude+Skills+云同步,打造智能 AI 知识库

本文介绍如何搭建高效的AI知识管理系统,将Obsidian笔记工具与ClaudeAI助手深度整合。通过ClaudeCode安装配置、ObsidianSkills插件添加和坚果云同步设置,实现本地存储安全性与云端便捷性的完美结合。该系统支持智能笔记整理、知识图谱可视化、智能搜索问答和内容创作辅助等功能,使静态笔记转变为能自动分析关联、处理复杂结构的"活"知识库。详细步骤包括工具准备、环境配置、插件安装和云同步设置

2301_79998006的博客 1083

java中存储树结构

java中存储树结构 树是数据结构中的一种,是有限个节点组成的集合。那么在java中如何存储这种结构呢? 这里以二叉树为例,首先想到的方法就是定义节点类,代码如下: //节点类 public class Node<T> { //节点值 private T t; //左节点 private Node<T> leftNode; //右节点 private Node<T> rightNode; public Node

yeah_you_are的博客 1891

Kriging克里金模型实现数据回归预测Matlab代码

Kriging克里金模型实现数据回归预测Matlab代码

天天酷科研的博客 605

网络编程之路(第二天) 结构化参数传递

HRESULT Fire_Initialize( IUnknown * pUnit, LONG lResult, BSTR lpszDescribe){ CComVariant avarParaments[3]; avarParament[2] = pUnit; avarParament[2].vt

markqian86的专栏 644

3、硬件工程师笔试面试学习汇总——器件篇目录(2025版本)

硬件工程师笔试面试学习

XU157303764的博客 7629

YOLOv13|损失函数优化篇:Focal EIOU 保持良好性能的同时,提供更高效的计算和更稳定的训练过程-包源码

Focal IoU与EIoU:目标检测中的损失函数优化 摘要:本文深入探讨了目标检测中两种重要的边界框回归损失函数优化方法。Focal IoU借鉴Focal Loss思想,通过(1-IoU)^γ因子调节损失权重,使模型更关注难样本(低IoU预测框),有效解决了传统IoU Loss对难易样本权重相同的问题。EIoU则在CIoU基础上改进,通过简化长宽比计算、分离宽高损失项,提升了计算效率和训练稳定性。两种方法分别从样本权重分配和损失函数结构优化角度,显著提升了目标检测性能,为实际应用提供了更高效的解决方案。文

FJN110的博客 1865

java 存储过程 参数_java结构化参数调用存储过程

[java] view plaincopyprint?String sql= "call prc_querySpecialPax(?,?,?)" ;OracleConnection con = ( OracleConnection) mydataSource .getConnection();StructDescriptor structdesc = new StructDescriptor( "...

weixin_36488616的博客 214

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

JAVA调用Oracle存储过程传入结构化参数

<br /> <br />一、JAVA部分<br />import java.math.BigDecimal;<br />import java.util.Hashtable;<br />import java.util.Vector;<br />import com.sinocc.exception.*;<br />import com.sinocc.systemdbmanager.CPCDao;<br />import com.sinocc.systemdbmanager.DataCentre;<br

nnnnyyyy的专栏 4015

VC中sqlite的使用

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

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

java jdbc 传参_JDBC执行Oracle传入参数为集合对象的存储过程

oraclePL/SQL定义结构化类型 CREATE OR REPLACE TYPE type_specialPax ASOBJECT--定义特服旅客对象。--HHB--2013-05-15(paxNameVARCHAR2 (150 ), --姓名psgGenderVARCHAR2 (150 ), --性别flightNoVARCHAR2 (150 ), --航班号orgCityAir...

weixin_39786534的博客 386

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

让 Birt 报表脚本数据源变得既简单又强大

概述:运行在 JVM 上的 SQL 函数和存储过程 总所周知,有些数据库没有强大的分析函数(eg. Mysql), 有些数据库没有存储过程(eg. Vertica),当遇到复杂的数据计算,往往只能通过 Python,R 等外部脚本来实现,但这些脚本语言和主流工程语言(Java)集成性不好,如果直接用工程语言实现类似 SQL 函数和存储过程的功能,经常只是针对某个计算需求编写冗长的代码,代码几乎不...

Sxb_Cry5tal的博客 290

JAVA调用ORACLE存储过程返回集合

比如传一个学生的集合至ORACLE存储过程 1、首先定义STUDENT TYPE   CREATE OR REPLACE TYPE STU AS OBJECT ( id number, name varchar2(20), code varchar2(20) )  2、定义集合类型 STULIST TYPE CREATE OR REPLACE TYPE STUL...

独孤一梦 524

让Birt报表脚本数据源变得既简单又强大

概述:运行在 JVM 上的 SQL 函数和存储过程 总所周知,有些数据库没有强大的分析函数(eg. Mysql), 有些数据库没有存储过程(eg. Vertica),当遇到复杂的数据计算,往往只能通过 ...

cowjlymz7800977460的博客 231

什么是java存储过程_什么是存储过程?用什么来调用?

定义存储过程是一个预编译的SQL语句,只需创建一次,以后在该程序中就可以调用多次。如果某次操作需要执行多次SQL,使用存储过程比单纯SQL语句执行要快。可以用一个命令对象来调用存储过程。优点1、存储过程因为SQL语句已经预编绎过了,因此运行的速度比较快。2、可保证数据的安全性和完整性。通过存储过程可以使没有权限的用户在控制之下间接地存取数据库,从而保证数据的安全。通过存储过程可以使相关的动作在一起...

weixin_42493720的博客 1310

Oracle 存储过程 实现 JAVA中的LIST输入参数

原文出自:http://blog.youkuaiyun.com/mantisXF/archive/2008/09/07/2896524.aspx 今天周末没事做便想来试试JAVA与ORACLE的结合程度,结果反映这两件利器结合起来真的很厉害,前无古人,后无来者。嘿嘿~~ 因为上周末帮JAVA组的同事实现了一个输入数值->update记录->返回游标的存储过程,这些过程很简单。但当时就考虑到了一

小濯 781

五 MySQL 存储过程

MySQL 存储过程

qq_62283694的博客 798

集算器用作Java结构化文件计算类库

有时我们不能使用数据库而采用文件系统存储数据,这时就需要自行完成基于文件的数据计算。但JAVA本身缺少相应的类库,需要硬编码才能实现结构化文件计算,代码复杂且可读性差。在网上有许多寻找用于文件计算的Java类库的问题,如:         http://www.coderanch.com/t/561180/java/java/read-text-file-perform-operation  

u012388497的专栏 1004

mysql execute 存储过程_mysql之存储过程

存储过程包含了一系列可执行的sql语句,存储过程存放于MySQL中,通过调用它的名字可以执行其内部的一堆sql存储过程的优点#1. 用于替代程序写的SQL语句,实现程序与sql解耦#2. 可以通过直接修改存储过程的方式修改业务逻辑(或bug),而不用重启服务器#3. 执行速度快,存储过程经过编译之后会比单独一条一条执行要快#4. 减少网络传输,尤其是在高并发情况下这点优势大,存储过程直接就在数据库...

weixin_36289292的博客 2863

数据库中的存储过程

之前介绍了 数据库基本常识的简介及mysql安装 结构化查询语言sql 数据库表介绍 数据库的数据类型 数据操作语言DML——数据的增删改查 数据库对象操作语言DDL——修改、删除数据库表等对象 数据库的完整性约束 数据库查询语言——DQL 数据库中的函数 数据库的group by分组和having筛选 select语句总结(DQL) 数据库的多表查询 数据库的自连接查询 数据库的92语法和99语法的区别 数据库的子查询 数据库中的事务 数据库中的视图 接下来介绍最后一个存储过程。当然,数据库中的东西还

玄昌盛不会编程 4310

PL/SQL -- Oracle存储过程

一、PL/SQL是什么? 1. PL/SQL概念   PL/SQL(Procedural Language/SQL)是一种过程化语言,它允许SQL的数据操纵语言和查询语句包含在块结构(block_structured)和代码过程语言中,使其成为一个功能强大的事务处理语言。   在甲骨文数据库管理方面,PL/SQL是对结构化查询语言(SQL)的过程语言扩展。PL/SQL的目的是联合数据库语言和过程语...

来日可期的博客 1231
上一篇: easyUI自定义datagrid的列显示
下一篇: JQuery uploadify 上传插件使用
carroll0911
博客等级 码龄17年 27粉丝 41原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值