如何从具有IN和OUT参数的Hibernate中调用存储过程 [英] How to call a Stored Procedure from Hibernate having both IN and OUT parameters
问题描述
我想从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 onecreate 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屋!
查看全文