NHibernate apelează procedura stocată Oracle cu prefix de schemă, cum?

Am procedura stocată de apelare NHibernate în Oracle care funcționează în prezent. Cu toate acestea, cum pot specifica un prefix de schemă în sintaxa {call} din etichetă?

am incercat

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

Dar timpul de execuție al NHibernate a revenit cu „schema2” nedefinit, în timp ce „schema2” este o schemă definită cu siguranță pe baza mea Oracle.

Mulțumiri.


person Niner    schedule 26.07.2010    source sursă


Răspunsuri (2)


Ar putea fi privilegii? Procedura poate exista în acea schemă, dar este posibil să nu aveți privilegii pentru a o executa sau este posibil să aveți privilegii printr-un rol care nu este activat.

Ar putea fi parametri. Dacă procedura așteaptă doi parametri (sau este o funcție), atunci încercarea de a o apela cu unul poate obține o eroare „Nu există” atunci când înseamnă cu adevărat „Nu există niciunul pe care să-l pot apela cu un singur parametru”.

Opțiunea finală este dacă aveți un pachet în schema dvs. cu același nume ca și cealaltă schemă. Se poate întâmpla cu ceva generic precum „UTILS”. Dacă cereți Oracle să execute UTILS.PROC și aveți un pachet UTILS, atunci acesta va căuta în pachet și va arunca o eroare dacă nu îl găsește, chiar dacă există o schemă UTILS cu o procedură PROC.


Editat pentru a adăuga

În acest caz, înclin spre o problemă de parametri. Exemplul aici pare a folosi ? ca substituent al parametrului.

person Gary Myers    schedule 26.07.2010
comment
Pot face exec schem1.my_sproc(:p1) în sqldeveloper fără erori, așa că nu ar trebui să fie un lucru cu privilegii (prin folosirea aceleiași date de conectare). Și nu există pachete implicate în asta. - person Niner; 27.07.2010

Aș putea să mă înșel aici, dar m-am gândit că NHibernate necesită ca toate UDF-urile/SPROCS-urile să fie prefixate cu „dbo”; {call dbo.schema2.my_sproc (:p1)} funcționează?

person DanP    schedule 28.07.2010