使用方法如下
我是使用的变量名称来注册的,还没有试使用变量的顺序来注册
其中 Find_Space_User_Property(?,?,?,?,?,?,?,?,?,?)为存储过程
这个存储过程带有1个输入参数,9个输出参数
具体的参数绑定方法如下所示
Transaction tx = session.beginTransaction();
CallableStatement cstmt = session.connection().prepareCall("{call Find_Space_User_Property(?,?,?,?,?,?,?,?,?,?) }");
cstmt.setInt("@userId", userId);
cstmt.registerOutParameter("@guestCount", java.sql.Types.INTEGER);
cstmt.registerOutParameter("@blogCount", java.sql.Types.INTEGER);
cstmt.registerOutParameter("@picCount", java.sql.Types.INTEGER);
cstmt.registerOutParameter("@messageCount", java.sql.Types.INTEGER);
cstmt.registerOutParameter("@giftCount", java.sql.Types.INTEGER);
cstmt.registerOutParameter("@clanMemberCount", java.sql.Types.INTEGER);
cstmt.registerOutParameter("@goodsCount", java.sql.Types.INTEGER);
cstmt.registerOutParameter("@usersFriendOnLineCount", java.sql.Types.INTEGER);
cstmt.registerOutParameter("@usersFriendCount", java.sql.Types.INTEGER);
cstmt.executeUpdate();
tx.commit();
cstmt.getInt("@guestCount");//这里是得到输出参数"@guestCount"
分享到:
相关推荐
在上述代码中,我们使用了CallableStatement来处理带有输入和输出参数的存储过程。注意,对于输出参数,需要先注册其类型,然后在执行后通过`getXXX`方法获取值。 为了确保代码的可读性和可维护性,建议将这些调用...
- **带参数调用**:如果存储过程有输入/输出或输出参数,可以使用`setParameter()`方法设置参数。 - **返回结果**:如果存储过程有返回值,可以使用`addScalar()`指定返回类型,例如`List`、`Integer`等。 4. **...
- **设置参数**:使用`setXXX`方法(根据参数类型,如`setString`, `setInteger`等)设置输入参数,如果存储过程有返回值,可以使用`registerOutParameter`注册输出参数。 - **执行存储过程**:调用`executeUpdate...
1. **存储过程的编写**:在数据库中创建存储过程,它是预编译的SQL代码集合,可以接受输入参数,返回结果集或输出参数。 2. **定义CallabledStatement**:在Hibernate中,使用Session的doWork方法或者Session的...
Hibernate 3.1 是一个流行的Java对象关系映射(ORM)...通过以上步骤,你可以在Hibernate 3.1中顺利地集成和使用存储过程。在实际项目中,根据具体需求调整和优化这些方法,可以进一步提高你的应用程序的效率和安全性。
本文将详细介绍如何在Hibernate框架下调用存储过程,并以Oracle数据库中的`batchUpdateStudent()`存储过程为例进行讲解。 #### 二、存储过程的优势 存储过程直接在数据库服务器上执行,与应用程序分离,具有以下...
在Java的持久化框架Hibernate中,调用数据库的存储过程是一项常见的需求。本文将深入探讨在Hibernate3中如何实现这一功能,以及相关的知识点。 一、为什么要使用存储过程 存储过程是预编译的SQL语句集合,它们在...
在提供的代码示例中,`doInHibernate` 方法展示了如何使用Hibernate调用不带参数返回值的存储过程。首先,我们需要创建一个`Session`对象,然后开始一个事务。接下来,通过`session.createSQLQuery`创建一个SQL查询...
- **ORM框架**:Object-Relational Mapping(ORM)框架如Hibernate和Entity Framework也支持调用存储过程,开发者可以在ORM的映射配置中指定存储过程,然后在代码中像调用普通方法一样调用它。 3. **参数传递** -...
如果存储过程有输出参数或返回值,我们需要在调用时显式处理。例如,一个存储过程可能有一个输入参数`@id`和一个输出参数`@count`,以及一个整数返回值。在C#中,我们可以这样处理: ```csharp int returnCode; int...
5. **处理结果**:如果存储过程有返回值或者输出参数,可以使用`registerOutParameter`和`getObject`方法获取。 `源码`标签表明我们将看到实际的代码示例,而`工具`标签暗示可能涉及到Spring框架的某些工具类。在这...
在实际应用中,很多存储过程都会带有输入或输出参数。下面将分别介绍如何使用上述三种方法来调用带参数的存储过程。 ##### 4.1 Hibernate框架 对于带参数的存储过程,可以通过`setString`等方法设置参数值: ```...
- **OUT**: 输出参数,用于从存储过程向外传递数据。 - **INOUT**: 双向参数,既可以输入也可以输出。 #### 六、示例:更新账户余额 ```sql CREATE PROCEDURE sam.credit(acc_no IN NUMBER, amount IN NUMBER) AS ...
2. 有返回值的存储过程(非列表):设置输出参数,调用`execute()`,然后从输出参数获取结果。 3. 返回列表的存储过程:通常需要游标(Cursor)作为输出参数,通过循环读取游标获取数据。 **在存储过程中做简单动态...
在Struts2中,可以通过拦截器或ActionContext来传递页码和每页条目数等参数,然后在存储过程中使用相应的SQL语句(如`ROWNUM`,`FETCH FIRST`或`OFFSET`)进行分页查询。 在`TestSSH3`这个文件中,可能包含了完整的...
- **变量声明区**:用于定义存储过程中使用的局部变量。 - **执行语句区**:包含具体的SQL或PL/SQL语句,用于执行数据操作。 - **异常处理区**:用于捕获并处理存储过程执行中可能出现的各种异常。 #### 关于Oracle...
在Struts2中,通过整合其他技术,如Hibernate或iBatis,可以方便地调用数据库的存储过程。存储过程是预编译的SQL语句集合,可以在数据库端执行复杂的业务逻辑,提高性能并降低网络流量。 本文将详细讲解如何在...
如果存储过程有多个输出参数或返回值,可以使用`NHibernateUtil`类的`GetType`方法指定输出参数的类型,并在调用后通过`GetResult`或`GetScalar`方法获取结果。 总结,调用存储过程在NHibernate中是一个实用的功能...
- **SELECT INTO**:在存储过程中,使用`SELECT INTO`时,必须确保至少有一行数据匹配查询条件,否则会抛出`NO DATA FOUND`异常。 - **NULL处理**:存储过程中处理NULL值时需特别注意,如需传递NULL值,应明确指定...