NHibernate wywołanie procedury składowanej Oracle z prefiksem schematu, jak?

Mam obecnie NHibernate wywołanie procedury składowanej w Oracle. Jak jednak określić prefiks schematu w składni {call} w tagu?

próbowałem

<sql-query name="my_sproc">
<return class="my_sproc_class" />
    {call schema2.my_sproc (:p1)}
</sql-query>

Ale środowisko uruchomieniowe NHibernate wróciło z niezdefiniowanym „schema2”, podczas gdy „schema2” jest zdecydowanie zdefiniowanym schematem w mojej bazie danych Oracle.

Dziękuję.


person Niner    schedule 26.07.2010    source źródło


Odpowiedzi (2)


Czy to mogą być przywileje? Procedura może istnieć w tym schemacie, ale możesz nie mieć uprawnień do jej wykonania lub możesz mieć uprawnienia związane z rolą, która nie jest włączona.

Mogą to być parametry. Jeśli procedura oczekuje dwóch parametrów (lub jest funkcją), to próba wywołania jej za pomocą jednego może spowodować błąd „Nie istnieje”, podczas gdy tak naprawdę oznacza to „Nie ma takiego, którego mogę wywołać z jednym parametrem”.

Ostatnią opcją jest to, że masz w swoim schemacie pakiet o tej samej nazwie, co inny schemat. Może się zdarzyć z czymś ogólnym, takim jak „UTILS”. Jeśli poprosisz Oracle o wykonanie UTILS.PROC, a masz pakiet UTILS, to poszuka w pakiecie i zgłosi błąd, jeśli go nie znajdzie, nawet jeśli istnieje schemat UTILS z procedurą PROC.


Edytowano, aby dodać

W takim przypadku skłaniam się w stronę problemu z parametrami. Przykład tutaj wydaje się używać ? jako symbol zastępczy parametru.

person Gary Myers    schedule 26.07.2010
comment
Mogę wykonać exec schem1.my_sproc(:p1) w sqldeveloper bez żadnych błędów, więc nie powinno to być sprawą przywilejów (przy użyciu tego samego loginu). I nie ma w tym żadnych pakietów. - person Niner; 27.07.2010

Mogę się tutaj pomylić, ale pomyślałem, że NHibernate wymaga, aby wszystkie UDF/SPROCS były poprzedzone przedrostkiem „dbo”; czy {call dbo.schema2.my_sproc (:p1)} działa?

person DanP    schedule 28.07.2010