【发布时间】:2013-03-04 07:54:53
【问题描述】:
我有这样的程序:
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 调用带有可选参数的过程?
谢谢。
【问题讨论】:
-
当您收到此错误消息时,NHibernate 生成了什么 SQL?
-
不是query.setstring吗?
-
需要看MyProc源码。正在调用 MyPackage.MyProc(param2 => '20130301');在 plsql 上工作正常吗?
-
Rippo:不,为每个参数调用 setparameter 都可以。
-
使用配置选项 show_sql=true。 NHibernate 会将所有生成的 SQL 发送到控制台。请参阅here 了解更多信息。
标签: oracle nhibernate plsql procedure optional