Проблема хранимой процедуры Oracle в NHibernate - PullRequest
0 голосов
/ 30 января 2010

------ Использование 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

Ответы [ 2 ]

1 голос
/ 22 апреля 2010

Попробуйте использовать CALL вместо EXEC.

Все эти тесты используют CALL.

http://nhibernate.svn.sourceforge.net/viewvc/nhibernate/trunk/nhibernate/src/NHibernate.Test/SqlTest/Custom/Oracle/StoredProcedures.hbm.xml?view=markup

1 голос
/ 21 апреля 2010

У меня только что был ORA-00900 с sql-запросом. Переписав ваш SQL как

begin exec THANADELETE ?; end;

может решить проблему

...