使用带有nhibernate的可选参数调用oracle过程

时间:2013-03-15 14:38:34

标签: oracle nhibernate plsql procedure optional

我有一个这样的程序:

Procedure MyProc(param1 IN VARCHAR2 default 'default_value', param2 IN VARCHAR2 default null);      

要在PL-SQL中调试,我正在做:

MyPackage.MyProc(param2 => '20130301');

它在Hbm文件中映射到Nhibernate:

<sql-query name="MyMappedProc">
   <![CDATA[  call MyPackage.MyProc(param2 => :parametro2); ]]>
</sql-query>

并在应用程序中调用:

_Query = Session.GetNamedQuery("MyMappedProc");
_Query.SetParameter("parametro2", "value_var");

var lista = _Query.List<object>();

我遇到了这个错误:

{"ORA-00907: missing right parenthesis"}

有没有办法用NHibernate调用带有可选参数的过程?

感谢。

1 个答案:

答案 0 :(得分:0)

我现在如何在生产代码中执行此操作

<sql-query name="Recalc">
    CALL P_DATA.RECALC.CONST_QUERY(:map, :id)
</sql-query>

然后从C#代码

session.GetNamedQuery("Recalc").SetParameter("id", this.id)
    .SetParameter("map", "MyMap").ExecuteUpdate();

像往常一样ShowSQL或marvelous Ayende's NHibernate profiler是你的朋友