广告
返回顶部
首页 > 资讯 > 精选 >spring中JdbcTemplate操作oracle的存储过程是什么
  • 281
分享到

spring中JdbcTemplate操作oracle的存储过程是什么

2023-07-06 03:07:27 281人浏览 独家记忆
摘要

这篇“spring中JdbcTemplate操作oracle的存储过程是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“s

这篇“spring中JdbcTemplate操作oracle的存储过程是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“spring中JdbcTemplate操作oracle的存储过程是什么”文章吧。

    场景:

    使用java代码调用oracle的存储过程,本例使用JdbcTemplate模板类操作.

    功能:

    方便后续查阅.

    1.JdbcTemplate调用存储过程(Procedure)不带返回值

    1.1存储过程

    CREATE OR REPLACE PROCEDURE PRO_QUERY_INFO_ARGS4(TASK_ID IN NUMBER) ISBEGIN  INSERT INTO F_LOG_INFO    (TASK_ID,     BEGIN_TIME,     END_TIME,     FLAG,     FaiL_INFO,     DATA_COUNT,     TABLE_NAME)  VALUES    (TASK_ID, SYSDATE - 1, SYSDATE, '999', '999', 999, 'TABLE_NAME2019');  COMMIT;EXCEPTioN  WHEN OTHERS THEN    ROLLBACK;END PRO_QUERY_INFO_ARGS4;

    1.2代码

    public static void doProcedures() {String procedures = "{call PRO_QUERY_INFO_ARGS4 ('888')}";jdbcTemplate.execute(procedures);}

    2.JdbcTemplate调用存储过程(Procedure)带返回值但值不是集合类型

    2.1存储过程

    CREATE OR REPLACE PROCEDURE PRO_QUERY_INFO_ARGS3(ARGS     IN VARCHAR2,                                                 RTNINFO  OUT VARCHAR2,                                                 ERRORMSG OUT VARCHAR2,                                                 FAILINFO OUT VARCHAR2) ISBEGIN  ERRORMSG := '';  RTNINFO  := '你输入的ARGS=' || ARGS;  SELECT FAIL_INFO INTO FAILINFO FROM F_LOG_INFO where TASK_ID = 1;  COMMIT;EXCEPTION  WHEN OTHERS THEN    ERRORMSG := 'PRO_QUERY_INFO_ARG抛出异常: ' || sqlERRM;END PRO_QUERY_INFO_ARGS3;

    2.2代码

    public static void getProceduresResult() {  String tt2 = (String) jdbcTemplate.execute(  new CallableStatementCreator() {  public CallableStatement createCallableStatement(    Connection con) throws SQLException {    String procedures = "{call PRO_QUERY_INFO_ARGS3 (?,?,?,?)}";    CallableStatement cs = con.prepareCall(procedures);        cs.setString(1, "代码调用");        cs.reGISterOutParameter(2, OracleTypes.VARCHAR);    cs.registerOutParameter(3, OracleTypes.VARCHAR);    cs.registerOutParameter(4, OracleTypes.VARCHAR);    return cs;  }  }, new CallableStatementCallback() {  public Object doInCallableStatement(CallableStatement st)    throws SQLException, DataAccessException {    st.execute();        Object tt2 = st.getObject(2);    Object tt3 = st.getObject(3);    Object tt4 = st.getObject(4);    return tt2;  }});}

    3.JdbcTemplate调用存储过程(Procedure)带返回值且值集合类型

    3.1存储过程

    CREATE OR REPLACE PROCEDURE PRO_QUERY_INFO_ARGS2(ERRORMSG OUT VARCHAR2,                                                 CURINFO  OUT SYS_REFCURSOR) ISBEGIN  ERRORMSG := '';  OPEN CURINFO FOR    SELECT FAIL_INFO, TABLE_NAME FROM F_LOG_INFO;  COMMIT;EXCEPTION  WHEN OTHERS THEN    ERRORMSG := 'PRO_QUERY_INFO_ARG2抛出异常: ' || SQLERRM;END PRO_QUERY_INFO_ARGS2;

    3.2代码

    public static List getProceduresResultList() {  List resultList = (List) jdbcTemplate.execute(  new CallableStatementCreator() {  public CallableStatement createCallableStatement(    Connection conn) throws SQLException {        String procedures = "{ CALL PRO_QUERY_INFO_ARGS2(?,?) }";    CallableStatement statement = conn    .prepareCall(procedures);        statement.registerOutParameter(1, OracleTypes.VARCHAR);        statement.registerOutParameter(2, OracleTypes.CURSOR);    return statement;  }  }, new CallableStatementCallback() {  public Object doInCallableStatement(    CallableStatement statement) throws SQLException,    DataAccessException {    List resultsMap = new ArrayList();    statement.execute();        ResultSet resultSet = (ResultSet) statement    .getObject(2);        while (resultSet.next()) {    Map rowMap = new HashMap();    rowMap.put("FAIL_INFO",    resultSet.getObject("FAIL_INFO"));    rowMap.put("TABLE_NAME",    resultSet.getObject("TABLE_NAME"));    resultsMap.add(rowMap);    }    resultSet.close();    return resultsMap;  }  }); return resultList;}

    4.附本例使用建表语句

    create table F_LOG_INFO(  task_id    NUMBER(16) not null,  begin_time DATE,  end_time   DATE,  flag       VARCHAR2(8),  fail_info  VARCHAR2(512),  data_count NUMBER(16),  table_name VARCHAR2(256));alter table F_LOG_INFO  add constraint PK_F_LOG_INFO primary key (TASK_ID);

    5.附本例使用完整测试代码

    public class TestProcedures {public static JdbcTemplate jdbcTemplate = getJdbcTemplate();public static void main(String[] args) { System.out.println("测试开始......"); // getProceduresResult(); doProcedures(); List result = getProceduresResultList(); for (int i = 0; i < result.size(); i++) {  Map rowMap = (Map) result.get(i);  String id = rowMap.get("FAIL_INFO").toString();  String name = rowMap.get("TABLE_NAME").toString();  System.out.println("FAIL_INFO=" + id + ";TABLE_NAME=" + name); } System.out.println("测试结束......");}public static void doProcedures() {String procedures = "{call PRO_QUERY_INFO_ARGS4 ('888')}";jdbcTemplate.execute(procedures);}public static void getProceduresResult() { String tt2 = (String) jdbcTemplate.execute(  new CallableStatementCreator() {  public CallableStatement createCallableStatement(   Connection con) throws SQLException {   String procedures = "{call PRO_QUERY_INFO_ARGS3 (?,?,?,?)}";   CallableStatement cs = con.prepareCall(procedures);      cs.setString(1, "代码调用");      cs.registerOutParameter(2, OracleTypes.VARCHAR);   cs.registerOutParameter(3, OracleTypes.VARCHAR);   cs.registerOutParameter(4, OracleTypes.VARCHAR);   return cs;  }  }, new CallableStatementCallback() {  public Object doInCallableStatement(CallableStatement st)   throws SQLException, DataAccessException {   st.execute();      Object tt2 = st.getObject(2);   Object tt3 = st.getObject(3);   Object tt4 = st.getObject(4);   return tt2;  }  });}public static List getProceduresResultList() {  List resultList = (List) jdbcTemplate.execute(   new CallableStatementCreator() {   public CallableStatement createCallableStatement(    Connection conn) throws SQLException {        String procedures = "{ CALL PRO_QUERY_INFO_ARGS2(?,?) }";    CallableStatement statement = conn    .prepareCall(procedures);        statement.registerOutParameter(1, OracleTypes.VARCHAR);        statement.registerOutParameter(2, OracleTypes.CURSOR);    return statement;   }   }, new CallableStatementCallback() {   public Object doInCallableStatement(    CallableStatement statement) throws SQLException,    DataAccessException {    List resultsMap = new ArrayList();    statement.execute();        ResultSet resultSet = (ResultSet) statement    .getObject(2);        while (resultSet.next()) {    Map rowMap = new HashMap();    rowMap.put("FAIL_INFO",    resultSet.getObject("FAIL_INFO"));    rowMap.put("TABLE_NAME",    resultSet.getObject("TABLE_NAME"));    resultsMap.add(rowMap);    }    resultSet.close();    return resultsMap;   }   });  return resultList;}public static JdbcTemplate getJdbcTemplate() {  DruidDataSource dataSource = new DruidDataSource();    String username = "demodb";  String passWord = "123456";  String jdbcUrl = "jdbc:oracle:thin:@127.0.0.1:1521/orcl";  String driverName = "oracle.jdbc.OracleDriver";    dataSource.setPassword(password);  dataSource.setUrl(jdbcUrl);  dataSource.setUsername(username);  dataSource.setDriverClassName(driverName);    JdbcTemplate jdbcTemplate = new JdbcTemplate();    jdbcTemplate.setDataSource(dataSource);  return jdbcTemplate;}}

    以上就是关于“spring中JdbcTemplate操作oracle的存储过程是什么”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注编程网精选频道。

    --结束END--

    本文标题: spring中JdbcTemplate操作oracle的存储过程是什么

    本文链接: https://www.lsjlt.com/news/357627.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    本篇文章演示代码以及资料文档资料下载

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档
    猜你喜欢
    • spring中JdbcTemplate操作oracle的存储过程是什么
      这篇“spring中JdbcTemplate操作oracle的存储过程是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“s...
      99+
      2023-07-06
    • spring中JdbcTemplate操作oracle的存储过程实例代码
      目录场景:功能:1.JdbcTemplate调用存储过程(Procedure)不带返回值1.1存储过程1.2代码2.JdbcTemplate调用存储过程(Procedure)带返回值...
      99+
      2023-05-16
      jdbctemplate调用存储过程 oracle存储过程怎么执行 oracle存储过程教程
    • Oracle procedure存储过程是什么
      Oracle存储过程是一种在数据库中存储的可重复使用的程序单元。它可以接受参数并执行一系列的数据库操作,比如查询、插入、更新和删除数...
      99+
      2023-10-23
      Oracle
    • oracle存储过程的游标是什么
      Oracle存储过程中的游标是一种用于遍历和访问查询结果集的数据库对象。游标可以被认为是指向某个查询结果集的指针,通过游标可以逐行地...
      99+
      2023-08-24
      oracle
    • oracle中存储函数与存储过程的区别是什么
      这期内容当中小编将会给大家带来有关oracle中存储函数与存储过程的区别是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。一:存储过程:简单来说就是有名字的pl/sql...
      99+
      2022-10-18
    • oracle存储过程的优缺点是什么
      这篇文章给大家分享的是有关oracle存储过程的优缺点是什么的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。oracle存储过程的优点有:简化了复杂的操作,降低了错误出现几率以及执...
      99+
      2022-10-18
    • mysql存储过程的作用是什么
      本篇内容主要讲解“mysql存储过程的作用是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“mysql存储过程的作用是什么”吧! ...
      99+
      2023-04-19
      mysql
    • MySQL中的存储过程是什么
      MySQL中的存储过程是一段预先编译好的SQL代码块,它可以在需要的时候被调用执行。存储过程通常用于封装一系列SQL语句,以实现特定...
      99+
      2023-08-15
      MySQL
    • Oracle中重新编译无效的存储过程是什么
      本篇内容主要讲解“Oracle中重新编译无效的存储过程是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Oracle中重新编译无效的存储过程是什么”吧!Ora...
      99+
      2022-10-18
    • mysql中存储过程和存储函数指的是什么
      小编给大家分享一下mysql中存储过程和存储函数指的是什么,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!在mysql中,存储过程和存储函数都是数据库中定义的一些SQL语句的集合。其中,存储函数...
      99+
      2022-10-18
    • 存储过程的优点是什么?
      以下是存储过程的优点:由于存储过程是编译和存储的,因此无论何时调用过程,响应都很快。您可以将所有必需的 SQL 语句分组在一个过程中并立即执行它们。由于过程存储在数据库服务器上这比客户端更快。您可以使用它执行所有复杂的查询,这会更快。使用过...
      99+
      2023-10-22
    • SQL Server中存储过程的基础是什么
      SQL Server中存储过程的基础是什么,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。可以创建一个过程供永久使用,或在一个会话中临时使用...
      99+
      2022-10-18
    • mysql数据库中的存储过程是什么
      这篇文章给大家分享的是有关mysql数据库中的存储过程是什么的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。mysql存储过程是在大型数据库系统中,一组为了完成特定功能的SQL 语...
      99+
      2022-10-18
    • MySQL存储函数与存储过程的区别是什么
      这篇“MySQL存储函数与存储过程的区别是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“MySQL存储函数与存储过程的区...
      99+
      2023-06-29
    • mysql中存储过程体语句是什么
      本篇文章给大家分享的是有关mysql中存储过程体语句是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。1.存储过程体包含了在过程调用时必须执行的语句,例如:dml、ddl语句...
      99+
      2023-06-14
    • Spring中的AOP操作是什么
      本篇内容主要讲解“Spring中的AOP操作是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Spring中的AOP操作是什么”吧!一、AOP操作术语 1. 连接点类里面哪些方法可以...
      99+
      2023-06-29
    • mysql中事务和存储过程指的是什么
      这篇文章主要讲解了“mysql中事务和存储过程指的是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“mysql中事务和存储过程指的是什么”吧! ...
      99+
      2022-10-19
    • mysql存储过程的游标有什么作用
      这篇文章主要讲解了“mysql存储过程的游标有什么作用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“mysql存储过程的游标有什么作用”吧! ...
      99+
      2022-10-19
    • mysql存储过程指的是什么意思
      小编给大家分享一下mysql存储过程指的是什么意思,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1、说明一组预先编译好的SQL语句的集合,理解成批处理语句。可以提...
      99+
      2023-06-15
    • MySQL存储过程是用来干什么的
      MySQL存储过程是一段预编译的代码,用于执行特定的数据库操作。它可以接收参数、执行查询语句、控制流程,以及返回结果。存储过程通常用...
      99+
      2023-08-16
      MySQL
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作