NHibernate Oracle存储过程问题
------使用VS2008、ASP.Net与C#、Oracle、NHibernate---- 我已经测试了我的存储过程。它可以工作,但不适用于 NHibernate。以下是代码:
过程:
create or replace procedure ThanaDelete (id number) as
begin
delete from thana_tbl where thana_code = id;
end
映射文件:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="DataTransfer" namespace="DataTransfer">
<class name="DataTransfer.Models.Thana, DataTransfer" table="THANA_TBL">
<id name="THANA_CODE" column="THANA_CODE" type="Int32" unsaved-value="0">
<generator class="native">
<param name="sequence">
SEQ_TEST
</param>
</generator>
</id>
<property name="THANA_NAME" column="THANA_NAME" type="string" not-null="false"/>
<property name="DISTRICT_CODE" column="DISTRICT_CODE" type="Int32" not-null="false"/>
<property name="USER_ID" column="USER_ID" type="string" not-null="false"/>
<property name="TRANSACTION_DATE" column="TRANSACTION_DATE" type="Date" not-null="false"/>
<property name="TRANSACTION_TIME" column="TRANSACTION_TIME" type="string" not-null="false"/>
<sql-delete>exec THANADELETE ? </sql-delete>
</class>
</hibernate-mapping>
错误:
Message: could not delete: [DataTransfer.Models.Thana#10][SQL: exec THANADELETE ?]
Source: NHibernate
Inner Exception
System.Data.OracleClient.OracleException
Message: ORA-00900: invalid SQL statement
------Using VS2008, ASP.Net with C#, Oracle, NHibernate----
I have tested my stored procedure. It's working but not with NHibernate. Here are the codes:
Procedure :
create or replace procedure ThanaDelete (id number) as
begin
delete from thana_tbl where thana_code = id;
end
Mapping File:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="DataTransfer" namespace="DataTransfer">
<class name="DataTransfer.Models.Thana, DataTransfer" table="THANA_TBL">
<id name="THANA_CODE" column="THANA_CODE" type="Int32" unsaved-value="0">
<generator class="native">
<param name="sequence">
SEQ_TEST
</param>
</generator>
</id>
<property name="THANA_NAME" column="THANA_NAME" type="string" not-null="false"/>
<property name="DISTRICT_CODE" column="DISTRICT_CODE" type="Int32" not-null="false"/>
<property name="USER_ID" column="USER_ID" type="string" not-null="false"/>
<property name="TRANSACTION_DATE" column="TRANSACTION_DATE" type="Date" not-null="false"/>
<property name="TRANSACTION_TIME" column="TRANSACTION_TIME" type="string" not-null="false"/>
<sql-delete>exec THANADELETE ? </sql-delete>
</class>
</hibernate-mapping>
error:
Message: could not delete: [DataTransfer.Models.Thana#10][SQL: exec THANADELETE ?]
Source: NHibernate
Inner Exception
System.Data.OracleClient.OracleException
Message: ORA-00900: invalid SQL statement
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我刚刚有一个带有 sql 查询的 ORA-00900。重写你的 SQL 可能
会解决问题
I just had an ORA-00900 with an sql-query. Rewriting your SQL as
might solve the problem
尝试使用 CALL 而不是 EXEC。
这些测试都使用CALL。
http://nhibernate.svn.sourceforge.net/viewvc/nhibernate/trunk/nhibernate/src/NHibernate.Test/SqlTest/Custom/Oracle/StoredProcedures.hbm.xml?view=markup
Try using CALL instead of EXEC.
These tests all use CALL.
http://nhibernate.svn.sourceforge.net/viewvc/nhibernate/trunk/nhibernate/src/NHibernate.Test/SqlTest/Custom/Oracle/StoredProcedures.hbm.xml?view=markup