如何从具有IN和OUT参数的Hibernate中调用存储过程 [英] How to call a Stored Procedure from Hibernate having both IN and OUT parameters

查看:404
本文介绍了如何从具有IN和OUT参数的Hibernate中调用存储过程的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想从Hibernate调用一个存储过程,它返回一个输出值。这是我的存储过程。

  create procedure myProcedure 
(in_Id int

out out_Id int

begin
...
END;

我正试图调用我的过程

  Query query = session.createSQLQuery(
CALL myProcedure(:in_Id))
.setParameter(in_id,123);
//不知道如何注册参数......?
列表结果= query.list();

我尝试了一切,但没有运气。你能帮我吗?
如果我尝试上面的说法:


PROCEDURE myProcedure的参数数量不正确;预期2,得到1


我尝试添加一个输出参数,如$ / b
$ b

  myProcedure(:out_id:in_Id)

但是接下来会说:


并非所有的命名参数都已设置:

/ blockquote>

我不知道如何设置参数?是不是像下面这样?

  .setParameter(out_id,?); 

任何帮助表示赞赏:)

解决方案最简单的方法是返回out参数作为返回参数
的一部分(只有当您有权访问商店过程时才相关)。
jest添加如下所示的存储过程:

  create procedure myProcedure_only_in_parms(in_Id int中的

开始
调用myProcedure(in_id,@ out_Id);
选择@out_id
END;

完成之后,通过以下方式将它与Hibernet一起使用非常简单

  Query query = session.createSQLQuery(
CALL myProcedure_only_in_parms(:in_Id))
.setParameter(in_id,123 );
列表结果= query.list();

结果包含out参数,
如果您想要返回乘法参数,您可以添加它通过做
选择@ parm1,@ parm2,...,@ parmn



希望它有所帮助


I want to call a Stored Procedure from Hibernate which returns an out value. Here is my Stored Procedure.

create procedure myProcedure
(  
in in_Id int,  
out out_Id int  
)  
begin  
...  
END;

I am trying this to call my procedure

Query query = session.createSQLQuery(  
"CALL myProcedure(:in_Id)")  
.setParameter("in_id", 123);   
//Not sure how to register out parameters...??      
List result = query.list();

I tried everything but no luck. Can you help me please? If i try the above it says:

Incorrect number of arguments for PROCEDURE myProcedure; expected 2, got 1

I tried to add an out parameter like

myProcedure(:out_id:in_Id)

but then it says

Not all named parameters have been set:

I don't know how out parameter will be set? Is it like the following?

.setParameter("out_id", ?);

Any help is appreciated :)

解决方案

The easiest way to do that is return the out parameter as part of the returning parameters (relevant only if you have access to the store procedures).
jest add a store procedure like the following one

create procedure myProcedure_only_in_parms (
   in in_Id int)
begin
call myProcedure(in_id,@out_Id) ;
select @out_id
END;

after done that it quite simple to use it with Hibernet in the following way

Query query = session.createSQLQuery(
"CALL myProcedure_only_in_parms (:in_Id)")
.setParameter("in_id", 123);
List result = query.list();

The result contains the out parameter, if you want return multiply parameters you can add it by doing select @parm1,@parm2,... ,@parmn

Hope it helped

这篇关于如何从具有IN和OUT参数的Hibernate中调用存储过程的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆