java 调用存储过程

1

1         String sql="{CALL P_F_CHECK6(?,?,?)}";
2         Object[] inValues = new Object[]{reportId, reportDate, organId};
3         int [] inIndexes = new int[]{1,2,3};
4         jdbcCall(sql, inValues, inIndexes);

2

1     protected Object jdbcCall(final String sql, final Object[] inValues,
2             int[] inIndexes) {
3          jdbcCall(sql, inValues, inIndexes,
4                 DEFAULT_LOB_SIZE);
5          return null;
6     }

3

 1     protected void jdbcCall(final String sql, final Object[] inValues,
 2              final int[] inIndexes,
 3              final int lobSize) {
 4         HibernateCallback callback = new HibernateCallback() {
 5             public Object doInHibernate(Session session)
 6                     throws HibernateException, SQLException {
 7                 CallableStatement cs = session.connection().prepareCall(sql);
 8                 setCallableStatementInParameters(cs, inValues, inIndexes);
 9                 registerCallableStatementOutParameter(cs, null, null);
10                 Object[] result = getCallableStatementOutParameter(cs, null,null, lobSize);
11                 cs.execute();
12                 cs.close();
13                 return result;
14             }
15         };
16          getHibernateTemplate().execute(callback);
17
18     }
时间: 2024-08-24 12:02:53

java 调用存储过程的相关文章

java调用存储过程

这段时间开始学习写存储过程,主要原因还是因为工作需要吧,本来以为很简单的,但几经挫折,豪气消磨殆尽,但总算搞通了,为了避免后来者少走弯路,特记述与此,同时亦对自己进行鼓励. 一:无返回值的存储过程 存储过程为: CREATE OR REPLACE PROCEDURE TESTA(PARA1 IN VARCHAR2,PARA2 IN VARCHAR2)  AS BEGIN INSERT INTO HYQ.B_ID (I_ID,I_NAME) VALUES (PARA1, PARA2); END T

Java调用存储过程时报 The user specified as a definer ('root'@'%') does not exist 解决方法

Caused by: java.sql.SQLException: The user specified as a definer (''@'') does not exist        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1075)        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3566)        at com.mysql

Java调用存储过程返回数组

Java调用存储过程: 结合SQL操作与存储过程 create procedure set_death_age(poet VARCHAR2, poet_age NUMBER) poet_id NUMBER; begin SELECT id INTO poet_id FROM poets WHERE name = poet; INSERT INTO deaths (mort_id, age) VALUES (poet_id, poet_age); end set_death_age; 下面是调用上

【转】java调用存储过程和函数

一.概述 如果想要执行存储过程,我们应该使用 CallableStatement 接口. CallableStatement 接口继承自PreparedStatement 接口.所以CallableStatement 接口包含有Statement 接口和PreparedStatement 接口定义的全部方法,但是并不是所有的方法我们都要使用,主要使用的方法有这样几个: CallableStatement 常用方法: 返回类型 方法签名 说明 boolean execute() 执行 SQL 语句

java调用存储过程和函数

以对表test进行增,删,改,查进行说明:1.新建表test create table TEST ( TID NUMBER not null, TNAME VARCHAR2(32), TCODE VARCHAR2(32), CREATEDATE DATE )alter table TEST add constraint PK_TEST_ID primary key (TID)2.数据库中存储过程的脚本:create or replace package test_package is proce

Java调用存储过程,你应该好好了解一下

存储过程是指保存在数据库并在数据库端执行的程序.你可以使用特殊的语法在Java类中调用存储过程.在调用时,存储过程的名称及指定的参数通过JDBC连接发送给DBMS,执行存储过程并通过连接(如果有)返回结果. 使用存储过程拥有和使用基于EJB或CORBA这样的应用服务器一样的好处.区别是存储过程可以从很多流行的DBMS中免费使用,而应用服务器大都非常昂贵.这并不只是许可证费用的问题.使用应用服务器所需要花费的管理.编写代码的费用,以及客户程序所增加的复杂性,都可以通过DBMS中的存储过程所整个地替

Java调用存储过程,随着按钮点击增多,调用存储过程也增多,会出现超时问题

刚开始代码是这样的直接通过jpa连接,刚开始点击调用存储过程的按钮,没啥问题,等点击多了就会没反应:日志报数据库连接超时: public String execute(Entity entity) {    Session session = (Session) this.getJpa().getManager().getDelegate();  SessionFactoryImpl sessionFactory = (SessionFactoryImpl) session.getSession

java调用存储过程mysql

在java中调用带返回值的存储过程的实现 直接上代码: DELIMITER $$ CREATE /*[DEFINER = { user | CURRENT_USER }]*/ PROCEDURE `test`.`text_e`(IN param1 INT ,OUT param2 VARCHAR(20)) /*LANGUAGE SQL | [NOT] DETERMINISTIC | { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DA

Java调用存储过程(有返回值)

1:创建存储过程 此存储过程通过传入的参数(Name),返回一个参数(address). create or replace procedure demo_procedure(namedemo in varchar2,addressdemo out varchar2)asbegin select address into addressdemo from system.demo where name=namedemo;end; 2:Java代码: import java.sql.Callable